Refs #765 -- Display warning if cookies are blocked

This commit is contained in:
Raphael Michel
2018-02-01 16:24:35 +01:00
parent e469b2e6ad
commit 989282ffbe
4 changed files with 35 additions and 3 deletions

View File

@@ -107,6 +107,28 @@
</div>
{% endif %}
{% if cookie_warning %}
<div class="alert alert-danger">
{% 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 %}
<br>
<a href="{% eventurl event "presale:event.index" %}" class="btn btn-default" target="_blank">
{% trans "Open ticket shop in new tab" %}
</a>
<div class="clearfix"></div>
{% 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 %}
</div>
{% endif %}
{% if subevent or not event.has_subevents %}
{% if not ev.presale_is_running %}
<div class="alert alert-info">

View File

@@ -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()

View File

@@ -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

View File

@@ -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