From 2b7d4bbef5eb815413bf72b18038c9b0b583f0f7 Mon Sep 17 00:00:00 2001 From: PCoder Date: Fri, 5 Oct 2018 11:10:10 +0200 Subject: [PATCH 1/3] Redirect to product page on error --- datacenterlight/views.py | 32 ++++++++++++++++++++++++++------ 1 file changed, 26 insertions(+), 6 deletions(-) diff --git a/datacenterlight/views.py b/datacenterlight/views.py index 0086e880..b7c606e9 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -398,7 +398,8 @@ class PaymentOrderView(FormView): "description": generic_payment_form.cleaned_data.get( 'description' ), - "product_id": product.id + "product_id": product.id, + "product_slug": product.product_slug } request.session["generic_payment_details"] = ( gp_details @@ -570,7 +571,12 @@ class OrderConfirmationView(DetailView): response = { 'status': False, 'redirect': "{url}#{section}".format( - url=reverse('datacenterlight:payment'), + url=(reverse('show_product', kwargs={ + 'product_slug': kwargs['product_slug']} + ) if 'generic_payment_details' in + request.session else + reverse('datacenterlight:payment') + ), section='payment_error'), 'msg_title': str(_('Error.')), 'msg_body': str( @@ -609,7 +615,12 @@ class OrderConfirmationView(DetailView): response = { 'status': False, 'redirect': "{url}#{section}".format( - url=reverse('hosting:payment'), + url=(reverse('show_product', kwargs={ + 'product_slug': kwargs['product_slug']} + ) if 'generic_payment_details' in + request.session else + reverse('datacenterlight:payment') + ), section='payment_error'), 'msg_title': str(_('Error.')), 'msg_body': str( @@ -664,8 +675,12 @@ class OrderConfirmationView(DetailView): response = { 'status': False, 'redirect': "{url}#{section}".format( - url=(reverse('datacenterlight:payment') + - "?type=generic"), + url=(reverse('show_product', kwargs={ + 'product_slug': kwargs['product_slug']} + ) if 'generic_payment_details' in + request.session else + reverse('datacenterlight:payment') + ), section='payment_error'), 'msg_title': str(_('Error.')), 'msg_body': str( @@ -736,7 +751,12 @@ class OrderConfirmationView(DetailView): response = { 'status': False, 'redirect': "{url}#{section}".format( - url=reverse('datacenterlight:payment'), + url=(reverse('show_product', kwargs={ + 'product_slug': kwargs['product_slug']} + ) if 'generic_payment_details' in + request.session else + reverse('datacenterlight:payment') + ), section='payment_error'), 'msg_title': str(_('Error.')), 'msg_body': str( From 5985ded36f6f515dd043e6f3cf747f274a9e6408 Mon Sep 17 00:00:00 2001 From: PCoder Date: Sat, 6 Oct 2018 07:31:38 +0200 Subject: [PATCH 2/3] Obtain product_slug from session Obtaining slug from kwargs won't work in OrderConfirmation page because we do not set the kwargs for that page. To resolve this, I add the product_slug to the generic_payment_details dict in the session --- datacenterlight/views.py | 43 ++++++++++++++++++++++++---------------- 1 file changed, 26 insertions(+), 17 deletions(-) diff --git a/datacenterlight/views.py b/datacenterlight/views.py index b7c606e9..19faa2d1 100644 --- a/datacenterlight/views.py +++ b/datacenterlight/views.py @@ -571,12 +571,14 @@ class OrderConfirmationView(DetailView): response = { 'status': False, 'redirect': "{url}#{section}".format( - url=(reverse('show_product', kwargs={ - 'product_slug': kwargs['product_slug']} - ) if 'generic_payment_details' in - request.session else + url=(reverse( + 'show_product', + kwargs={'product_slug': + request.session['generic_payment_details'] + ['product_slug']} + ) if 'generic_payment_details' in request.session else reverse('datacenterlight:payment') - ), + ), section='payment_error'), 'msg_title': str(_('Error.')), 'msg_body': str( @@ -615,12 +617,16 @@ class OrderConfirmationView(DetailView): response = { 'status': False, 'redirect': "{url}#{section}".format( - url=(reverse('show_product', kwargs={ - 'product_slug': kwargs['product_slug']} - ) if 'generic_payment_details' in - request.session else + url=(reverse( + 'show_product', + kwargs={'product_slug': + request.session + ['generic_payment_details'] + ['product_slug']} + ) if 'generic_payment_details' in + request.session else reverse('datacenterlight:payment') - ), + ), section='payment_error'), 'msg_title': str(_('Error.')), 'msg_body': str( @@ -676,7 +682,7 @@ class OrderConfirmationView(DetailView): 'status': False, 'redirect': "{url}#{section}".format( url=(reverse('show_product', kwargs={ - 'product_slug': kwargs['product_slug']} + 'product_slug': gp_details['product_slug']} ) if 'generic_payment_details' in request.session else reverse('datacenterlight:payment') @@ -751,13 +757,16 @@ class OrderConfirmationView(DetailView): response = { 'status': False, 'redirect': "{url}#{section}".format( - url=(reverse('show_product', kwargs={ - 'product_slug': kwargs['product_slug']} - ) if 'generic_payment_details' in - request.session else + url=(reverse( + 'show_product', + kwargs={'product_slug': + request.session['generic_payment_details'] + ['product_slug']} + ) if 'generic_payment_details' in request.session else reverse('datacenterlight:payment') - ), - section='payment_error'), + ), + section='payment_error' + ), 'msg_title': str(_('Error.')), 'msg_body': str( _('There was a payment related error.' From 5770c231ee60063aa60b93c273c03dcedb0826fb Mon Sep 17 00:00:00 2001 From: PCoder Date: Sat, 6 Oct 2018 07:47:40 +0200 Subject: [PATCH 3/3] Fix flake8 warnings --- datacenterlight/utils.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/datacenterlight/utils.py b/datacenterlight/utils.py index b9edc994..bbcb16ab 100644 --- a/datacenterlight/utils.py +++ b/datacenterlight/utils.py @@ -96,7 +96,7 @@ def clear_all_session_vars(request): if request.session is not None: for session_var in ['specs', 'template', 'billing_address', 'billing_address_data', 'card_id', - 'token', 'customer','generic_payment_type', + 'token', 'customer', 'generic_payment_type', 'generic_payment_details', 'product_id']: if session_var in request.session: - del request.session[session_var] \ No newline at end of file + del request.session[session_var]