Hide voucher redemption if the sale period is over

This commit is contained in:
Raphael Michel
2023-05-26 11:30:09 +02:00
parent c594b6c1e5
commit 7a419f9bb5
3 changed files with 16 additions and 11 deletions

View File

@@ -466,15 +466,18 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['ev'] = self.subevent or self.request.event
context['subevent'] = self.subevent
# Show voucher option if an event is selected and vouchers exist
vouchers_exist = self.request.event.cache.get('vouchers_exist')
if vouchers_exist is None:
vouchers_exist = self.request.event.vouchers.exists()
self.request.event.cache.set('vouchers_exist', vouchers_exist)
context['show_vouchers'] = context['vouchers_exist'] = vouchers_exist
context['ev'] = self.subevent or self.request.event
context['subevent'] = self.subevent
context['show_vouchers'] = context['vouchers_exist'] = vouchers_exist and (
(self.request.event.has_subevents and not self.subevent) or
context['ev'].presale_is_running
)
context['allow_waitinglist'] = self.request.event.settings.waiting_list_enabled and context['ev'].presale_is_running

View File

@@ -690,7 +690,14 @@ class WidgetAPIProductList(EventListMixin, View):
data['date_range'] = self._get_date_range(ev, request.event)
fail = False
vouchers_exist = self.request.event.get_cache().get('vouchers_exist')
if vouchers_exist is None:
vouchers_exist = self.request.event.vouchers.exists()
self.request.event.get_cache().set('vouchers_exist', vouchers_exist)
data['vouchers_exist'] = vouchers_exist
if not ev.presale_is_running:
data['vouchers_exist'] = False
if ev.presale_has_ended:
if request.event.settings.presale_has_ended_text:
data['error'] = str(request.event.settings.presale_has_ended_text)
@@ -742,6 +749,7 @@ class WidgetAPIProductList(EventListMixin, View):
data['items_by_category'] = []
data['display_add_to_cart'] = False
data['itemnum'] = 0
data['vouchers_exist'] = False
data['has_seating_plan'] = ev.seating_plan is not None
data['has_seating_plan_waitinglist'] = False
@@ -760,12 +768,6 @@ class WidgetAPIProductList(EventListMixin, View):
data['has_seating_plan_waitinglist'] = True
break
vouchers_exist = self.request.event.get_cache().get('vouchers_exist')
if vouchers_exist is None:
vouchers_exist = self.request.event.vouchers.exists()
self.request.event.get_cache().set('vouchers_exist', vouchers_exist)
data['vouchers_exist'] = vouchers_exist
if "cart_id" not in request.GET:
cache.set(cache_key, data, 10)
# These pages are cached for a really short duration this should make them pretty accurate with

View File

@@ -487,7 +487,7 @@ class WidgetCartTest(CartTestMixin, TestCase):
"use_native_spinners": False,
"has_seating_plan": False,
"has_seating_plan_waitinglist": False,
"vouchers_exist": True,
"vouchers_exist": False,
"waiting_list_enabled": False,
"error": "This voucher is expired.",
"items_by_category": [],