diff --git a/src/pretix/presale/templates/pretixpresale/event/index.html b/src/pretix/presale/templates/pretixpresale/event/index.html
index 69ae1b4545..83cf723695 100644
--- a/src/pretix/presale/templates/pretixpresale/event/index.html
+++ b/src/pretix/presale/templates/pretixpresale/event/index.html
@@ -107,6 +107,28 @@
{% endif %}
+ {% if cookie_warning %}
+
+ {% if cart_namespace %}
+ {% blocktrans trimmed %}
+ Your browser does not accept cookies from us. However, we need to set a cookie to remember who
+ you are and what is in your cart. Please try to open the ticket shop in a new tab or change your
+ browser settings.
+ {% endblocktrans %}
+
+
+ {% trans "Open ticket shop in new tab" %}
+
+
+ {% else %}
+ {% blocktrans trimmed %}
+ Your browser does not accept cookies from us. However, we need to set a cookie to remember who
+ you are and what is in your cart. Please change your browser settings accordingly.
+ {% endblocktrans %}
+ {% endif %}
+
+ {% endif %}
+
{% if subevent or not event.has_subevents %}
{% if not ev.presale_is_running %}
diff --git a/src/pretix/presale/views/cart.py b/src/pretix/presale/views/cart.py
index 46b102843d..09cdbb6088 100644
--- a/src/pretix/presale/views/cart.py
+++ b/src/pretix/presale/views/cart.py
@@ -37,12 +37,17 @@ class CartActionMixin:
def get_next_url(self):
if "next" in self.request.GET and is_safe_url(self.request.GET.get("next")):
- return self.request.GET.get('next')
+ u = self.request.GET.get('next')
else:
kwargs = {}
if 'cart_namespace' in self.kwargs:
kwargs['cart_namespace'] = self.kwargs['cart_namespace']
- return eventreverse(self.request.event, 'presale:event.index', kwargs=kwargs)
+ u = eventreverse(self.request.event, 'presale:event.index', kwargs=kwargs)
+ if '?' in u:
+ u += '&require_cookie=true'
+ else:
+ u += '?require_cookie=false'
+ return u
def get_success_url(self, value=None):
return self.get_next_url()
diff --git a/src/pretix/presale/views/checkout.py b/src/pretix/presale/views/checkout.py
index 971de7f407..804dd2b1ec 100644
--- a/src/pretix/presale/views/checkout.py
+++ b/src/pretix/presale/views/checkout.py
@@ -23,7 +23,7 @@ class CheckoutView(View):
kwargs = {}
if 'cart_namespace' in self.kwargs:
kwargs['cart_namespace'] = self.kwargs['cart_namespace']
- return eventreverse(self.request.event, 'presale:event.index', kwargs=kwargs)
+ return eventreverse(self.request.event, 'presale:event.index', kwargs=kwargs) + '?require_cookie=false'
def dispatch(self, request, *args, **kwargs):
self.request = request
diff --git a/src/pretix/presale/views/event.py b/src/pretix/presale/views/event.py
index 7637166599..1766127c0a 100644
--- a/src/pretix/presale/views/event.py
+++ b/src/pretix/presale/views/event.py
@@ -274,6 +274,11 @@ class EventIndex(EventViewMixin, CartMixin, TemplateView):
)
)
+ context['cookie_warning'] = (
+ 'require_cookie' in self.request.GET and
+ settings.SESSION_COOKIE_NAME not in self.request.COOKIES
+ )
+
return context