docs: def get_listing(self):
          '''
          This function gets all of the information that we need to either render or
          validate the form.  It is structured to avoid duplicate DB queries
          '''
          if not hasattr(self,'listing'):
              allEvents = self.get_allEvents()
  
              openEvents = allEvents.filter(registrationOpen=True)
              closedEvents = allEvents.filter(registrationOpen=False)
  
              publicEvents = allEvents.instance_of(PublicEvent)
              allSeries = allEvents.instance_of(Series)
  
              self.listing = {
                  'allEvents': allEvents,
                  'openEvents': openEvents,
                  'closedEvents': closedEvents,
                  'publicEvents': publicEvents,
                  'allSeries': allSeries,
                  'regOpenEvents': publicEvents.filter(registrationOpen=True).filter(
                      Q(publicevent__category__isnull=True) | Q(publicevent__category__separateOnRegistrationPage=False)
                  ),
                  'regClosedEvents': publicEvents.filter(registrationOpen=False).filter(
                      Q(publicevent__category__isnull=True) | Q(publicevent__category__separateOnRegistrationPage=False)
                  ),
                  'categorySeparateEvents': publicEvents.filter(
                      publicevent__category__separateOnRegistrationPage=True
                  ).order_by('publicevent__category'),
                  'regOpenSeries': allSeries.filter(registrationOpen=True).filter(
                      Q(series__category__isnull=True) | Q(series__category__separateOnRegistrationPage=False)
                  ),
                  'regClosedSeries': allSeries.filter(registrationOpen=False).filter(
                      Q(series__category__isnull=True) | Q(series__category__separateOnRegistrationPage=False)
                  ),
                  'categorySeparateSeries': allSeries.filter(
                      series__category__separateOnRegistrationPage=True
                  ).order_by('series__category'),
              }
          return self.listing