From d811e420953d84992c7344fc2e6432a597707316 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Sun, 29 Oct 2017 00:21:51 +0200 Subject: [PATCH] Widget: Fix session handling issue --- src/pretix/presale/views/cart.py | 16 ++++++++++------ src/pretix/presale/views/waiting.py | 2 +- 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/src/pretix/presale/views/cart.py b/src/pretix/presale/views/cart.py index 8a48b3d2db..f7a223c224 100644 --- a/src/pretix/presale/views/cart.py +++ b/src/pretix/presale/views/cart.py @@ -175,16 +175,20 @@ def get_or_create_cart_id(request): session_keyname += '_' + request.resolver_match.kwargs.get('cart_namespace') prefix = request.resolver_match.kwargs.get('cart_namespace') - current_id = request.session.get(session_keyname) + current_id = orig_current_id = request.session.get(session_keyname) + if prefix and 'take_cart_id' in request.GET: + pos = CartPosition.objects.filter(event=request.event, cart_id=request.GET.get('take_cart_id')) + if request.method == "POST" or pos.exists(): + current_id = request.GET.get('take_cart_id') + if current_id and current_id in request.session.get('carts', {}): + if current_id != orig_current_id: + request.session[session_keyname] = current_id return current_id else: cart_data = {} - if prefix and 'take_cart_id' in request.GET: - if CartPosition.objects.filter(event=request.event, cart_id=request.GET.get('take_cart_id')).exists(): - new_id = request.GET.get('take_cart_id') - else: - new_id = generate_cart_id(prefix=prefix) + if prefix and 'take_cart_id' in request.GET and current_id: + new_id = current_id else: new_id = generate_cart_id(prefix=prefix) diff --git a/src/pretix/presale/views/waiting.py b/src/pretix/presale/views/waiting.py index 6e390c1681..a8a36d2c5a 100644 --- a/src/pretix/presale/views/waiting.py +++ b/src/pretix/presale/views/waiting.py @@ -30,7 +30,7 @@ class WaitingView(EventViewMixin, FormView): return kwargs def get_context_data(self, **kwargs): - ctx = super().get_context_data() + ctx = super().get_context_data(**kwargs) ctx['event'] = self.request.event ctx['subevent'] = self.subevent ctx['item'], ctx['variation'] = self.item_and_variation