Reduce duplicate code

This commit is contained in:
Raphael Michel
2015-03-07 13:39:38 +01:00
parent 3bacfdcb9f
commit 62b82bc852

View File

@@ -76,27 +76,36 @@ class QuestionsForm(forms.Form):
self.fields['question_%s' % q.identity] = field
class CheckoutStart(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, TemplateView):
template_name = "pretixpresale/event/checkout_questions.html"
class CheckoutView(TemplateView):
def get_success_url(self):
def get_payment_url(self):
return reverse('presale:event.checkout.payment', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
})
def get_url(self):
def get_confirm_url(self):
return reverse('presale:event.checkout.confirm', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
})
def get_questions_url(self):
return reverse('presale:event.checkout.start', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
})
def get_previous_url(self):
def get_index_url(self):
return reverse('presale:event.index', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
'organizer': self.request.event.organizer.slug
})
class CheckoutStart(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, CheckoutView):
template_name = "pretixpresale/event/checkout_questions.html"
@cached_property
def forms(self):
"""
@@ -147,17 +156,17 @@ class CheckoutStart(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, T
messages.error(self.request,
_("We had difficulties processing your input. Please review the errors below."))
return self.get(*args, **kwargs)
return redirect(self.get_success_url())
return redirect(self.get_payment_url())
def get(self, *args, **kwargs):
if not self.cartpos:
messages.error(self.request,
_("Your cart is empty"))
return redirect(self.get_previous_url())
return redirect(self.get_index_url())
if not self.forms:
# Nothing to do here
return redirect(self.get_success_url())
return redirect(self.get_payment_url())
return super().get(*args, **kwargs)
@@ -167,27 +176,9 @@ class CheckoutStart(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, T
return ctx
class PaymentDetails(EventViewMixin, EventLoginRequiredMixin, TemplateView):
class PaymentDetails(EventViewMixin, EventLoginRequiredMixin, CheckoutView):
template_name = "pretixpresale/event/checkout_payment.html"
def get_success_url(self):
return reverse('presale:event.checkout.confirm', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
})
def get_url(self):
return reverse('presale:event.checkout.payment', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
})
def get_previous_url(self):
return reverse('presale:event.checkout.start', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
})
@cached_property
def _total_order_value(self):
return CartPosition.objects.current.filter(
@@ -219,7 +210,7 @@ class PaymentDetails(EventViewMixin, EventLoginRequiredMixin, TemplateView):
if isinstance(resp, HttpResponse):
return resp
elif resp is True:
return redirect(self.get_success_url())
return redirect(self.get_confirm_url())
else:
return self.get(request, *args, **kwargs)
@@ -230,27 +221,9 @@ class PaymentDetails(EventViewMixin, EventLoginRequiredMixin, TemplateView):
return ctx
class OrderConfirm(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, TemplateView):
class OrderConfirm(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, CheckoutView):
template_name = "pretixpresale/event/checkout_confirm.html"
def get_success_url(self):
return reverse('presale:event.checkout.success', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
})
def get_url(self):
return reverse('presale:event.checkout.confirm', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
})
def get_previous_url(self):
return reverse('presale:event.checkout.payment', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
})
def get_context_data(self, **kwargs):
ctx = super().get_context_data(**kwargs)
ctx['cart'] = self.get_cart()
@@ -267,27 +240,21 @@ class OrderConfirm(EventViewMixin, CartDisplayMixin, EventLoginRequiredMixin, Te
def check_process(self, request):
if not self.payment_provider:
messages.error(request, _('The payment information you entered was incomplete.'))
return redirect(self.get_previous_url())
return redirect(self.get_payment_url())
if not self.payment_provider.checkout_is_valid_session(request):
messages.error(request, _('The payment information you entered was incomplete.'))
return redirect(self.get_previous_url())
if len(self.cart_items) == 0:
return redirect(self.get_payment_url())
if len(self.cartpos) == 0:
messages.warning(request, _('Your cart is empty.'))
return redirect(reverse('presale:event.index', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
}))
for cp in self.cart_items:
return redirect(self.get_index_url())
for cp in self.cartpos:
answ = {
aw.question_id: aw.answer for aw in cp.answers.all()
}
for q in cp.item.questions.all():
if q.required and q.identity not in answ:
messages.warning(request, _('Please fill in answers to all required questions.'))
return redirect(reverse('presale:event.checkout.start', kwargs={
'event': self.request.event.slug,
'organizer': self.request.event.organizer.slug,
}))
return redirect(self.get_questions_url())
def get(self, request, *args, **kwargs):
self.request = request