From 54079797d26490401cd4741843cd8c62af1f36e7 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Wed, 28 Aug 2024 09:28:35 +0200 Subject: [PATCH] Event list: Do not include old or inactive subevents in event list (Z#23163541) (#4415) --- src/pretix/presale/views/organizer.py | 21 +++++++++++++++------ src/tests/presale/test_widget.py | 2 +- 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/pretix/presale/views/organizer.py b/src/pretix/presale/views/organizer.py index f518af43db..12d4fa378b 100644 --- a/src/pretix/presale/views/organizer.py +++ b/src/pretix/presale/views/organizer.py @@ -186,14 +186,23 @@ class EventListMixin: query = Q(is_public=True) & Q(live=True) qs = self.request.organizer.events.using(settings.DATABASE_REPLICA).filter(query) qs = qs.filter(Q(all_sales_channels=True) | Q(limit_sales_channels=self.request.sales_channel)) + + show_old = "old" in self.request.GET + + subevent_filter = Q(subevents__active=True, subevents__is_public=True) + if not show_old: + subevent_filter &= Q( + Q(subevents__date_to__gte=now()) | Q(subevents__date_from__gte=now()) + ) + qs = qs.annotate( - min_from=Min('subevents__date_from'), - min_to=Min('subevents__date_to'), - max_from=Max('subevents__date_from'), - max_to=Max('subevents__date_to'), - max_fromto=Greatest(Max('subevents__date_to'), Max('subevents__date_from')), + min_from=Min('subevents__date_from', filter=subevent_filter), + min_to=Min('subevents__date_to', filter=subevent_filter), + max_from=Max('subevents__date_from', filter=subevent_filter), + max_to=Max('subevents__date_to', filter=subevent_filter), + max_fromto=Greatest(Max('subevents__date_to', filter=subevent_filter), Max('subevents__date_from', filter=subevent_filter)), ) - if "old" in self.request.GET: + if show_old: date_q = Q(date_to__lt=now()) | (Q(date_to__isnull=True) & Q(date_from__lt=now())) qs = qs.filter( Q(Q(has_subevents=False) & date_q) | Q( diff --git a/src/tests/presale/test_widget.py b/src/tests/presale/test_widget.py index 43ad33a9a1..2b2b30afb0 100644 --- a/src/tests/presale/test_widget.py +++ b/src/tests/presale/test_widget.py @@ -773,7 +773,7 @@ class WidgetCartTest(CartTestMixin, TestCase): 'poweredby': 'ticketing powered by pretix', 'events': [ {'availability': {'color': 'none', 'text': 'Event series'}, - 'date_range': 'Dec. 29, 2018 – Jan. 4, 2019', + 'date_range': 'Jan. 1st – 4th, 2019', 'event_url': 'http://example.com/ccc/30c3/', 'location': '', 'name': '30C3'},