Add setting to hide sold-out timeslots

This commit is contained in:
Raphael Michel
2021-03-29 10:18:25 +02:00
parent d3748a6194
commit d43e85da6d
7 changed files with 33 additions and 2 deletions

View File

@@ -503,6 +503,11 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
context['subevent_list'] = self.request.event.subevents_sorted(
filter_qs_by_attr(self.request.event.subevents_annotated(self.request.sales_channel.identifier).using(settings.DATABASE_REPLICA), self.request)
)
if self.request.event.settings.event_list_available_only:
context['subevent_list'] = [
se for se in context['subevent_list']
if not se.presale_has_ended and se.best_availability_state >= Quota.AVAILABILITY_RESERVED
]
return context

View File

@@ -18,7 +18,7 @@ from pytz import UTC
from pretix.base.i18n import language
from pretix.base.models import (
Event, EventMetaValue, SubEvent, SubEventMetaValue,
Event, EventMetaValue, SubEvent, SubEventMetaValue, Quota,
)
from pretix.base.services.quotas import QuotaAvailability
from pretix.helpers.compat import date_fromisocalendar
@@ -386,6 +386,11 @@ def add_subevents_for_days(qs, before, after, ebd, timezones, event=None, cart_n
kwargs['cart_namespace'] = cart_namespace
s = event.settings if event else se.event.settings
if s.event_list_available_only:
if se.presale_has_ended or se.best_availability_state < Quota.AVAILABILITY_RESERVED:
continue
timezones.add(s.timezones)
tz = pytz.timezone(s.timezone)
datetime_from = se.date_from.astimezone(tz)

View File

@@ -513,6 +513,12 @@ class WidgetAPIProductList(EventListMixin, View):
filter_qs_by_attr(self.request.event.subevents_annotated(self.request.sales_channel.identifier), self.request)
)
tz = pytz.timezone(request.event.settings.timezone)
if self.request.event.settings.event_list_available_only:
evs = [
se for se in evs
if not se.presale_has_ended and se.best_availability_state >= Quota.AVAILABILITY_RESERVED
]
data['events'] = [
{
'name': str(ev.name),