Skip to content
Snippets Groups Projects
Commit 70270f27 authored by Nik | Klampfradler's avatar Nik | Klampfradler Committed by Tom Teichler
Browse files

Rewrite do_payment as class-based view

parent 1751df82
No related branches found
No related tags found
2 merge requests!9Resolve "Add payment processing UI",!3Implement payment backends and interaction
...@@ -21,7 +21,7 @@ from .models.invoice import Invoice, InvoiceGroup ...@@ -21,7 +21,7 @@ from .models.invoice import Invoice, InvoiceGroup
class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView): class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView):
permission_required = "tezor.can_print_invoice" permission_required = "tezor.print_invoice_rule"
def get_context_data(self, *args, **kwargs): def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args, **kwargs) context = super().get_context_data(*args, **kwargs)
...@@ -33,23 +33,29 @@ class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView): ...@@ -33,23 +33,29 @@ class GetInvoicePDF(PermissionRequiredMixin, RenderPDFView):
return context return context
def do_payment(request, token): class DoPaymentView(PermissionRequiredMixin, View):
payment = get_object_or_404(get_payment_model(), token=token)
if payment.status not in [PaymentStatus.WAITING, PaymentStatus.INPUT, PaymentStatus.REJECTED]: model = Invoice
return redirect(payment.get_success_url()) permission_required = "tezor.do_payment_rule"
template_name = "tezor/invoice/payment.html"
def dispatch(self, request, token):
self.object = get_object_or_404(self.model, token=token)
if self.object.status not in [PaymentStatus.WAITING, PaymentStatus.INPUT, PaymentStatus.REJECTED]:
return redirect(self.object.get_success_url())
try: try:
form = payment.get_form(data=request.POST or None) form = self.object.get_form(data=request.POST or None)
except RedirectNeeded as redirect_to: except RedirectNeeded as redirect_to:
return redirect(str(redirect_to)) return redirect(str(redirect_to))
context = { context = {
"form": form, "form": form,
"payment": payment, "payment": self.object,
} }
return render(request, "tezor/invoice/payment.html", context) return render(request, self.template_name, context)
class ClientListView(PermissionRequiredMixin, SingleTableView): class ClientListView(PermissionRequiredMixin, SingleTableView):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment