From 3318680f5fc4b63ca7d9dc0be265520d3e80727f Mon Sep 17 00:00:00 2001 From: Pierre Ducroquet Date: Thu, 25 May 2023 17:29:44 +0200 Subject: [PATCH] api: push back common criteria to 'help' PG (#77590) --- chrono/api/views.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/chrono/api/views.py b/chrono/api/views.py index 0f7f32b5..be759972 100644 --- a/chrono/api/views.py +++ b/chrono/api/views.py @@ -1903,9 +1903,13 @@ class RecurringFillslots(APIView): ): event_filter = Q() agendas_by_slug = {a.slug: a for a in agendas} + agenda_slugs = set() + event_slugs = set() for agenda_slug, days_by_event in slots.items(): agenda = agendas_by_slug[agenda_slug] + agenda_slugs.add(agenda_slug) for event_slug, days in days_by_event.items(): + event_slugs.add(event_slug) lookups = { 'agenda__slug': agenda_slug, 'primary_event__slug': event_slug, @@ -1926,6 +1930,8 @@ class RecurringFillslots(APIView): event_filter |= Q(**lookups) events = Event.objects.filter(event_filter) if event_filter else Event.objects.none() + if agenda_slugs: + events = events.filter(agenda__slug__in=agenda_slugs, primary_event__slug__in=event_slugs) events = events.filter(start_datetime__gte=start_datetime, cancelled=False) if end_datetime: events = events.filter(start_datetime__lte=end_datetime)