docs: def get_allEvents(self):
          '''
          Splitting this method out to get the set of events to filter allows
          one to subclass for different subsets of events without copying other
          logic
          '''
  
          if not hasattr(self,'allEvents'):
              timeFilters = {'endTime__gte': timezone.now()}
              if getConstant('registration__displayLimitDays') or 0 > 0:
                  timeFilters['startTime__lte'] = timezone.now() + timedelta(days=getConstant('registration__displayLimitDays'))
  
              # Get the Event listing here to avoid duplicate queries
              self.allEvents = Event.objects.filter(
                  **timeFilters
              ).filter(
                  Q(instance_of=PublicEvent) |
                  Q(instance_of=Series)
              ).annotate(
                  **self.get_annotations()
              ).exclude(
                  Q(status=Event.RegStatus.hidden) |
                  Q(status=Event.RegStatus.regHidden) |
                  Q(status=Event.RegStatus.linkOnly)
              ).order_by(*self.get_ordering())
  
          return self.allEvents