summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorjvm-odoo <jvm@odoo.com>2020-05-20 11:05:49 +0000
committerjvm-odoo <jvm@odoo.com>2020-05-25 07:31:05 +0000
commit0e7102587ea28a74a4e0ebdcff181dcabbf45163 (patch)
tree91b4a1c8210a342818a644ad81193aa4f37a919b
parentbe54b82afdb246697d9c46e7d73bac09cc45a4c6 (diff)
[FIX] website_sale_delivery: traceback when going back
Issue - Install eCommerce & Delivery Costs - Add a delivery method for US only - Publish the delivery method - Logout - Order something, select your delivery method and pay with wire transfer - When it's done, click 2 times on the browser back button Traceback Cause When going back, the address is incorrect (public user address). So since you have 2 delivery methods and your address have only one, an assert cause a traceback Solution This is the right behavior but I think it's better to give a clear error message instead of a traceback. OPW-2243736 X-original-commit: 0222b727c143593debaf40a4ab54bda2f6b42213
-rw-r--r--addons/website_sale_delivery/controllers/main.py6
-rw-r--r--addons/website_sale_delivery/i18n/website_sale_delivery.pot10
2 files changed, 14 insertions, 2 deletions
diff --git a/addons/website_sale_delivery/controllers/main.py b/addons/website_sale_delivery/controllers/main.py
index c623ebab63c..09b03d78f6e 100644
--- a/addons/website_sale_delivery/controllers/main.py
+++ b/addons/website_sale_delivery/controllers/main.py
@@ -4,6 +4,7 @@
from odoo import http, _
from odoo.http import request
from odoo.addons.website_sale.controllers.main import WebsiteSale
+from odoo.exceptions import UserError
class WebsiteSaleDelivery(WebsiteSale):
@@ -32,7 +33,10 @@ class WebsiteSaleDelivery(WebsiteSale):
@http.route(['/shop/carrier_rate_shipment'], type='json', auth='public', methods=['POST'], website=True)
def cart_carrier_rate_shipment(self, carrier_id, **kw):
order = request.website.sale_get_order(force_create=True)
- assert int(carrier_id) in order._get_delivery_methods().ids, "unallowed carrier"
+
+ if not int(carrier_id) in order._get_delivery_methods().ids:
+ raise UserError(_('It seems that a delivery method is not compatible with your address. Please refresh the page and try again.'))
+
Monetary = request.env['ir.qweb.field.monetary']
res = {'carrier_id': carrier_id}
diff --git a/addons/website_sale_delivery/i18n/website_sale_delivery.pot b/addons/website_sale_delivery/i18n/website_sale_delivery.pot
index 13593142ead..6c951ad4302 100644
--- a/addons/website_sale_delivery/i18n/website_sale_delivery.pot
+++ b/addons/website_sale_delivery/i18n/website_sale_delivery.pot
@@ -92,7 +92,15 @@ msgid "Free"
msgstr ""
#. module: website_sale_delivery
-#: code:addons/website_sale_delivery/controllers/main.py:72
+#: code:addons/website_sale_delivery/controllers/main.py:0
+#, python-format
+msgid ""
+"It seems that a delivery method is not compatible with your address. Please "
+"refresh the page and try again."
+msgstr ""
+
+#. module: website_sale_delivery
+#: code:addons/website_sale_delivery/controllers/main.py:0
#, python-format
msgid ""
"No shipping method is available for your current order and shipping address."