From e75a0e48566374017a37d64010c942eecd035391 Mon Sep 17 00:00:00 2001 From: Raphael Michel Date: Mon, 29 Jun 2015 15:03:55 +0200 Subject: [PATCH] Fixed an error in cart processing --- src/pretix/presale/views/cart.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/pretix/presale/views/cart.py b/src/pretix/presale/views/cart.py index 639d605cac..1fed080805 100644 --- a/src/pretix/presale/views/cart.py +++ b/src/pretix/presale/views/cart.py @@ -107,10 +107,6 @@ class CartAdd(EventViewMixin, CartActionMixin, View): return redirect(self.get_failure_url()) self.items = self._items_from_post_data() - self._expired = self._re_add_expired_positions() - - if not self.items: - return redirect(self.get_failure_url()) # We do not use EventLoginRequiredMixin here, as we want to store stuff into the # session before redirecting to login @@ -159,15 +155,23 @@ class CartAdd(EventViewMixin, CartActionMixin, View): Q(user=self.request.user) & Q(event=self.request.event) & Q(expires__gt=now()) ).update(expires=expiry) - def _delete_expired(self, expired): - for cp in expired: + def _delete_expired(self): + for cp in self._expired: if cp.version_end_date is None: cp.delete() + def _initial_checks(self): + self._expired = self._re_add_expired_positions() + + if not self.items: + return redirect(self.get_failure_url()) + def process(self): expiry = now() + timedelta(minutes=self.request.event.settings.get('reservation_time', as_type=int)) self._extend_existing(expiry) + self._initial_checks() + # Fetch items from the database items_cache = { i.identity: i for i @@ -252,7 +256,7 @@ class CartAdd(EventViewMixin, CartActionMixin, View): for quota in quotas: quota.release() - self._delete_expired(self._expired) + self._delete_expired() if not self.msg_some_unavailable: messages.success(self.request, _('The products have been successfully added to your cart.'))