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
This commit is part of merge request !9. Comments created here will be created in the context of that merge request.
...@@ -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