Allow to restrict availability of variations by date, sales channel, and voucher (#2202)

This commit is contained in:
Raphael Michel
2021-09-15 12:04:17 +02:00
committed by GitHub
parent 4789d82c4e
commit 17adde99fa
20 changed files with 583 additions and 52 deletions

View File

@@ -113,6 +113,13 @@ def get_grouped_items(event, subevent=None, voucher=None, channel='web', require
if not event.settings.seating_choice:
requires_seat = Value(0, output_field=IntegerField())
variation_q = (
Q(Q(available_from__isnull=True) | Q(available_from__lte=now())) &
Q(Q(available_until__isnull=True) | Q(available_until__gte=now()))
)
if not voucher or not voucher.show_hidden_items:
variation_q &= Q(hide_without_voucher=False)
items = base_qs.using(settings.DATABASE_REPLICA).filter_available(channel=channel, voucher=voucher, allow_addons=allow_addons).select_related(
'category', 'tax_rule', # for re-grouping
'hidden_if_available',
@@ -147,7 +154,11 @@ def get_grouped_items(event, subevent=None, voucher=None, channel='web', require
)
),
).filter(
active=True, quotas__isnull=False, subevent_disabled=False
variation_q,
active=True,
sales_channels__contains=channel,
quotas__isnull=False,
subevent_disabled=False
).prefetch_related(
Prefetch('quotas',
to_attr='_subevent_quotas',