mirror of
https://github.com/pretix/pretix.git
synced 2026-05-10 16:04:02 +00:00
Fix bugs in the checkout confirm flow
This commit is contained in:
@@ -267,15 +267,15 @@ class OrderConfirm(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, Ch
|
|||||||
return provider
|
return provider
|
||||||
|
|
||||||
def check_process(self, request):
|
def check_process(self, request):
|
||||||
if not self.payment_provider:
|
if len(self.cartpos) == 0:
|
||||||
|
messages.warning(request, _('Your cart is empty.'))
|
||||||
|
return redirect(self.get_index_url())
|
||||||
|
if 'payment' not in request.session or not self.payment_provider:
|
||||||
messages.error(request, _('The payment information you entered was incomplete.'))
|
messages.error(request, _('The payment information you entered was incomplete.'))
|
||||||
return redirect(self.get_payment_url())
|
return redirect(self.get_payment_url())
|
||||||
if not self.payment_provider.checkout_is_valid_session(request):
|
if not self.payment_provider.checkout_is_valid_session(request):
|
||||||
messages.error(request, _('The payment information you entered was incomplete.'))
|
messages.error(request, _('The payment information you entered was incomplete.'))
|
||||||
return redirect(self.get_payment_url())
|
return redirect(self.get_payment_url())
|
||||||
if len(self.cartpos) == 0:
|
|
||||||
messages.warning(request, _('Your cart is empty.'))
|
|
||||||
return redirect(self.get_index_url())
|
|
||||||
for cp in self.cartpos:
|
for cp in self.cartpos:
|
||||||
answ = {
|
answ = {
|
||||||
aw.question_id: aw.answer for aw in cp.answers.all()
|
aw.question_id: aw.answer for aw in cp.answers.all()
|
||||||
@@ -284,6 +284,10 @@ class OrderConfirm(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, Ch
|
|||||||
if q.required and q.identity not in answ:
|
if q.required and q.identity not in answ:
|
||||||
messages.warning(request, _('Please fill in answers to all required questions.'))
|
messages.warning(request, _('Please fill in answers to all required questions.'))
|
||||||
return redirect(self.get_questions_url())
|
return redirect(self.get_questions_url())
|
||||||
|
if cp.item.admission and self.request.event.settings.get('attendee_names_required', as_type=bool) \
|
||||||
|
and cp.attendee_name is None:
|
||||||
|
messages.warning(request, _('Please fill in answers to all required questions.'))
|
||||||
|
return redirect(self.get_questions_url())
|
||||||
|
|
||||||
def get(self, request, *args, **kwargs):
|
def get(self, request, *args, **kwargs):
|
||||||
self.request = request
|
self.request = request
|
||||||
@@ -336,6 +340,8 @@ class OrderConfirm(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, Ch
|
|||||||
cartpos[i] = cp
|
cartpos[i] = cp
|
||||||
cp.expires = now() + timedelta(minutes=self.request.event.settings.get('reservation_time', as_type=int))
|
cp.expires = now() + timedelta(minutes=self.request.event.settings.get('reservation_time', as_type=int))
|
||||||
cp.save()
|
cp.save()
|
||||||
|
else:
|
||||||
|
cp.delete() # Sorry!
|
||||||
if not self.msg_some_unavailable: # Everything went well
|
if not self.msg_some_unavailable: # Everything went well
|
||||||
order = self._place_order(cartpos, dt)
|
order = self._place_order(cartpos, dt)
|
||||||
messages.success(request, _('Your order has been placed.'))
|
messages.success(request, _('Your order has been placed.'))
|
||||||
|
|||||||
Reference in New Issue
Block a user