docs: def organizer(self):
          '''
          Since events can be organized for registration in different ways (e.g. by month,
          by session, or the interaction of the two), this property is used to make it easy
          for templates to include necessary organizing information.  Note that this method
          has nothing to do with the sorting of any queryset in use, which still has to be
          handled elsewhere.
          '''
          rule = getConstant('registration__orgRule')
  
          # Default grouping is "Other", in case session, month, or weekday are not specified.
          org = {
              'name': _('Other'),
              'nameFirst': {'name': _('Other'), 'sorter': _('Other')},
              'nameSecond': {'name': '', 'sorter': ''},
              'id': None,
          }
  
          def updateForMonth(self, org):
              ''' Function to avoid repeated code '''
              if self.month:
                  org.update({
                      'name': _(month_name[self.month]),
                      'nameFirst': {'name': _(month_name[self.month]), 'sorter': self.month},
                      'id': 'month_%s' % self.month,
                  })
              return org
  
          def updateForSession(self, org):
              ''' Function to avoid repeated code '''
              if self.session:
                  org.update({
                      'name': self.session.name,
                      'nameFirst': {'name': _(self.session.name), 'sorter': _(self.session.name)},
                      'id': self.session.pk,
                  })
              return org
  
          if rule in ['SessionFirst', 'SessionAlphaFirst']:
              org = updateForSession(self, org)
              if not org.get('id'):
                  org = updateForMonth(self, org)
          elif rule == 'Month':
              org = updateForMonth(self, org)
          elif rule in ['Session','SessionAlpha']:
              org = updateForSession(self, org)
          elif rule in ['SessionMonth','SessionAlphaMonth']:
              if self.session and self.month:
                  org.update({
                      'name': _('%s: %s' % (month_name[self.month], self.session.name)),
                      'nameFirst': {'name': _(month_name[self.month]), 'sorter': self.month},
                      'nameSecond': {'name': _(self.session.name), 'sorter': _(self.session.name)},
                      'id': 'month_%s_session_%s' % (self.month, self.session.pk),
                  })
              elif not self.month:
                  org = updateForSession(self, org)
              elif not self.session:
                  org = updateForMonth(self, org)
          elif rule == 'Weekday':
              w = self.weekday
              d = day_name[w]
              if w is not None:
                  org.update({
                      'name': _(d),
                      'nameFirst': {'name': _(d), 'sorter': w},
                      'id': w,
                  })
          elif rule == 'MonthWeekday':
              w = self.weekday
              d = day_name[w]
              m = self.month
              mn = month_name[m]
              if w is not None and m:
                  org.update({
                      'name': _('%ss in %s' % (d, mn)),
                      'nameFirst': {'name': _(mn), 'sorter': m},
                      'nameSecond': {'name': _('%ss' % d), 'sorter': w},
                      'id': 'month_%s_weekday_%s' % (m, w)
                  })
          return org