From 989282ffbe13143791ada2f530bed1858a422714 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Thu, 1 Feb 2018 16:24:35 +0100 Subject: [PATCH] Refs #765 -- Display warning if cookies are blocked --- .../templates/pretixpresale/event/index.html | 22 +++++++++++++++++++ src/pretix/presale/views/cart.py | 9 ++++++-- src/pretix/presale/views/checkout.py | 2 +- src/pretix/presale/views/event.py | 5 +++++ 4 files changed, 35 insertions(+), 3 deletions(-) diff --git a/src/pretix/presale/templates/pretixpresale/event/index.html b/src/pretix/presale/templates/pretixpresale/event/index.html index 69ae1b454..83cf72369 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 46b102843..09cdbb608 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 971de7f40..804dd2b1e 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 763716659..1766127c0 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