docs: def serveWeek(self, request, year=None, week=None):
          """Weekly calendar view."""
          myurl = self.get_url(request)
          def myUrl(urlYear, urlWeek):
              if (urlYear < 1900 or
                  urlYear > 2099 or
                  urlYear == 2099 and urlWeek == 53):
                  return None
              if urlWeek == 53 and num_weeks_in_year(urlYear) == 52:
                  urlWeek = 52
              return myurl + self.reverse_subpage('serveWeek',
                                                  args=[urlYear, urlWeek])
          today = timezone.localdate()
          thisYear, thisWeekNum, dow = gregorian_to_week_date(today)
          if year is None: year = thisYear
          if week is None: week = thisWeekNum
          year = int(year)
          week = int(week)
  
          firstDay, lastDay, prevYearNumWeeks, yearNumWeeks = week_info(year, week)
          if week == 53 and yearNumWeeks == 52:
              raise Http404("Only 52 weeks in {}".format(year))
  
          eventsInWeek = self._getEventsByDay(request, firstDay, lastDay)
          if firstDay.year >= 1900:
              monthlyUrl = myurl + self.reverse_subpage('serveMonth',
                                                        args=[firstDay.year, firstDay.month])
          else:
              monthlyUrl = myurl + self.reverse_subpage('serveMonth', args=[1900, 1])
          listUrl = myurl + self.reverse_subpage('serveUpcoming')
  
          prevWeek = week - 1
          prevWeekYear = year
          if prevWeek == 0:
              prevWeek = prevYearNumWeeks
              prevWeekYear -= 1
  
          nextWeek = week + 1
          nextWeekYear = year
          if nextWeek > yearNumWeeks:
              nextWeek = 1
              nextWeekYear += 1
  
          # TODO Consider changing to a TemplateResponse
          # https://stackoverflow.com/questions/38838601
          return render(request, "joyous/calendar_week.html",
                        {'self':         self,
                         'page':         self,
                         'version':      __version__,
                         'year':         year,
                         'week':         week,
                         'today':        today,
                         'yesterday':    today - dt.timedelta(1),
                         'prevWeekUrl':  myUrl(prevWeekYear, prevWeek),
                         'nextWeekUrl':  myUrl(nextWeekYear, nextWeek),
                         'prevYearUrl':  myUrl(year - 1, week),
                         'nextYearUrl':  myUrl(year + 1, week),
                         'thisWeekUrl':  myUrl(thisYear, thisWeekNum),
                         'monthlyUrl':   monthlyUrl,
                         'listUrl':      listUrl,
                         'weekName':     _("Week {weekNum}").format(weekNum=week),
                         'weekdayAbbr':  weekday_abbr,
                         'events':       [eventsInWeek]})