diff --git a/src/pretix/presale/templates/pretixpresale/event/fragment_availability.html b/src/pretix/presale/templates/pretixpresale/event/fragment_availability.html
index 6a8207815f..5e97dd4292 100644
--- a/src/pretix/presale/templates/pretixpresale/event/fragment_availability.html
+++ b/src/pretix/presale/templates/pretixpresale/event/fragment_availability.html
@@ -7,7 +7,7 @@
{% else %}
{% trans "SOLD OUT" %}
{% endif %}
- {% if event.settings.waiting_list_enabled and item.allow_waitinglist %}
+ {% if allow_waitinglist and item.allow_waitinglist %}
@@ -20,7 +20,7 @@
{% trans "Reserved" %}
{% trans "All remaining products are reserved but might become available again." %}
- {% if event.settings.waiting_list_enabled and item.allow_waitinglist %}
+ {% if allow_waitinglist and item.allow_waitinglist %}
diff --git a/src/pretix/presale/views/event.py b/src/pretix/presale/views/event.py
index d942b03ccd..5a7f3ef2b7 100644
--- a/src/pretix/presale/views/event.py
+++ b/src/pretix/presale/views/event.py
@@ -439,7 +439,8 @@ class EventIndex(EventViewMixin, EventListMixin, CartMixin, TemplateView):
context['ev'] = self.subevent or self.request.event
context['subevent'] = self.subevent
context['cart'] = self.get_cart()
- context['has_addon_choices'] = any(cp.has_addon_choices for cp in get_cart(self.request))\
+ context['has_addon_choices'] = any(cp.has_addon_choices for cp in get_cart(self.request))
+ context['allow_waitinglist'] = self.request.event.settings.waiting_list_enabled and context['ev'].presale_is_running
if self.subevent:
context['frontpage_text'] = str(self.subevent.frontpage_text)
diff --git a/src/pretix/presale/views/waiting.py b/src/pretix/presale/views/waiting.py
index 28d027c552..9d91ce72f3 100644
--- a/src/pretix/presale/views/waiting.py
+++ b/src/pretix/presale/views/waiting.py
@@ -98,6 +98,14 @@ class WaitingView(EventViewMixin, FormView):
messages.error(request, _("Waiting lists are disabled for this event."))
return redirect(self.get_index_url())
+ if self.request.event.presale_has_ended:
+ messages.error(request, _("The presale period for this event is over."))
+ return redirect(self.get_index_url())
+
+ if not self.request.event.presale_is_running:
+ messages.error(request, _("The presale for this event has not yet started."))
+ return redirect(self.get_index_url())
+
if not self.item_and_variation:
messages.error(request, _("We could not identify the product you selected."))
return redirect(self.get_index_url())