diff --git a/registrasion/views.py b/registrasion/views.py index 77c00bb3f4b1231f6cdeb6d37e8c075f52adf962..3f9dbf4ff2703a25c7376fe36cd50adab46b224b 100644 --- a/registrasion/views.py +++ b/registrasion/views.py @@ -377,10 +377,30 @@ def checkout(request): invoice. ''' current_cart = CartController.for_user(request.user) - current_invoice = InvoiceController.for_cart(current_cart.cart) + + if "fix_errors" in request.GET and request.GET["fix_errors"] == "true": + current_cart.fix_simple_errors() + + try: + current_invoice = InvoiceController.for_cart(current_cart.cart) + except ValidationError as ve: + return checkout_errors(request, ve) return redirect("invoice", current_invoice.invoice.id) +def checkout_errors(request, errors): + + error_list = [] + for error in errors.error_list: + if isinstance(error, tuple): + error = error[1] + error_list.append(error) + + data = { + "error_list": error_list, + } + + return render(request, "registrasion/checkout_errors.html", data) @login_required def invoice(request, invoice_id):