diff --git a/RIGS/models.py b/RIGS/models.py index 6c4c9c9c..34f65724 100644 --- a/RIGS/models.py +++ b/RIGS/models.py @@ -224,6 +224,15 @@ class EventManager(models.Manager): ).order_by('start_date', 'end_date', 'start_time', 'end_time', 'meet_at').select_related('person', 'organisation', 'venue', 'mic') return events + def events_in_bounds(self, start, end): + events = self.filter( + (models.Q(start_date__gte=start.date(), start_date__lte=end.date())) | # Start date in bounds + (models.Q(end_date__gte=start.date(), end_date__lte=end.date())) | # End date in bounds + (models.Q(access_at__gte=start, access_at__lte=end)) | # Access at in bounds + (models.Q(meet_at__gte=start, meet_at__lte=end)) # Meet at in bounds + ).order_by('start_date', 'end_date', 'start_time', 'end_time', 'meet_at').select_related('person', 'organisation', 'venue', 'mic') + return events + def rig_count(self): event_count = self.filter( (models.Q(start_date__gte=datetime.date.today(), end_date__isnull=True, dry_hire=False, diff --git a/RIGS/views.py b/RIGS/views.py index ea7d2bc9..a0ef2785 100644 --- a/RIGS/views.py +++ b/RIGS/views.py @@ -300,10 +300,9 @@ class SecureAPIRequest(generic.View): # Probably a calendar request start_datetime = datetime.datetime.strptime( start, "%Y-%m-%dT%H:%M:%SZ" ) end_datetime = datetime.datetime.strptime( end, "%Y-%m-%dT%H:%M:%SZ" ) - all_objects = self.models[model].objects + objects = self.models[model].objects.events_in_bounds(start_datetime,end_datetime) + results = [] - filter = Q(start_date__lte=end_datetime) & Q(start_date__gte=start_datetime) - objects = all_objects.filter(filter).select_related('person', 'organisation', 'venue', 'mic').order_by('-start_date') for item in objects: data = { 'pk': item.pk,