Subevent list: Apply attribute filter before deciding against list view (Z#23226325)

This commit is contained in:
Kara Engelhardt
2026-03-30 11:16:07 +02:00
parent 4c0c775baa
commit 473a446855
+12 -25
View File
@@ -678,9 +678,17 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
except Voucher.DoesNotExist:
pass
filter_qs = filter_qs_by_attr(
self.request.event.subevents_annotated(
self.request.sales_channel,
voucher,
).using(settings.DATABASE_REPLICA),
self.request
)
context = {}
context['list_type'] = self.request.GET.get("style", self.request.event.settings.event_list_type)
if context['list_type'] not in ("calendar", "week") and self.request.event.subevents.filter(date_from__gt=time_machine_now()).count() > 50:
if context['list_type'] not in ("calendar", "week") and filter_qs.count() > 50:
if self.request.event.settings.event_list_type not in ("calendar", "week"):
self.request.event.settings.event_list_type = "calendar"
context['list_type'] = "calendar"
@@ -703,13 +711,7 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
ebd = defaultdict(list)
add_subevents_for_days(
filter_qs_by_attr(
self.request.event.subevents_annotated(
self.request.sales_channel,
voucher,
).using(settings.DATABASE_REPLICA),
self.request
),
filter_qs,
before=limit_before,
after=after,
ebd=ebd,
@@ -729,7 +731,6 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
timeout=120,
)
context['weeks'] = weeks_for_template(ebd, self.year, self.month, future_only=self.request.event.settings.event_calendar_future_only)
context['weeks'] = weeks_for_template(ebd, self.year, self.month, future_only=self.request.event.settings.event_calendar_future_only)
context['months'] = [date(self.year, i + 1, 1) for i in range(12)]
if self.request.event.settings.event_calendar_future_only:
context['years'] = range(time_machine_now().year, time_machine_now().year + 3)
@@ -767,13 +768,7 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
ebd = defaultdict(list)
add_subevents_for_days(
filter_qs_by_attr(
self.request.event.subevents_annotated(
self.request.sales_channel,
voucher=voucher,
).using(settings.DATABASE_REPLICA),
self.request
),
filter_qs,
before=limit_before,
after=after,
ebd=ebd,
@@ -820,15 +815,7 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
future_only=self.request.event.settings.event_calendar_future_only
)
else:
subevents = self.request.event.subevents_sorted(
filter_qs_by_attr(
self.request.event.subevents_annotated(
self.request.sales_channel,
voucher=voucher,
).using(settings.DATABASE_REPLICA),
self.request
)
)
subevents = self.request.event.subevents_sorted(filter_qs)
subevents = filter_subevents_with_plugins(list(subevents), self.request.sales_channel)
context['subevent_list'] = subevents
if self.request.event.settings.event_list_available_only and not voucher: