From 61aa89268637ef88fd676641c5aaaacc63c70b77 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Mottet=20=28oms=29?= Date: Thu, 8 Apr 2021 07:13:58 +0000 Subject: [PATCH] [FIX] website: make configurator IAP call failures silent MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit On initialization, the website configurator makes a call to an external service (api_website) hosted on iap-services.odoo.com to retrieve a list of industries. This call might fail if the external service is done. This potential failure is now correctly handled: On '/api/website/1/configurator/industries' call failure, the configurator is silently skipped and the user is redirected to the view website.theme_view_kanban closes odoo/odoo#69465 X-original-commit: 35311608197ec77bafed82505639314ca693fb19 Signed-off-by: Jérémy Kersten (jke) --- addons/website/models/website.py | 8 ++++++-- .../src/components/configurator/configurator.js | 12 ++++-------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/addons/website/models/website.py b/addons/website/models/website.py index 7964e8fa8ec..fffb37f849b 100644 --- a/addons/website/models/website.py +++ b/addons/website/models/website.py @@ -18,7 +18,7 @@ from odoo.addons.http_routing.models.ir_http import slugify, _guess_mimetype, ur from odoo.addons.website.models.ir_http import sitemap_qs2dom from odoo.addons.portal.controllers.portal import pager from odoo.addons.iap.tools import iap_tools -from odoo.exceptions import UserError +from odoo.exceptions import UserError, AccessError from odoo.http import request from odoo.modules.module import get_resource_path from odoo.osv.expression import FALSE_DOMAIN @@ -268,7 +268,11 @@ class Website(models.Model): r['logo'] = False if company_id.logo and company_id.logo != company_id._get_logo(): r['logo'] = company_id.logo.decode('utf-8') - r['industries'] = self._website_api_rpc('/api/website/1/configurator/industries', {'lang': self.env.user.lang})['industries'] + try: + result = self._website_api_rpc('/api/website/1/configurator/industries', {'lang': self.env.user.lang}) + r['industries'] = result['industries'] + except AccessError as e: + logger.warning(e.args[0]) return r @api.model diff --git a/addons/website/static/src/components/configurator/configurator.js b/addons/website/static/src/components/configurator/configurator.js index 0749dffa81b..61ad1a36c05 100644 --- a/addons/website/static/src/components/configurator/configurator.js +++ b/addons/website/static/src/components/configurator/configurator.js @@ -388,14 +388,10 @@ const actions = { async function getInitialState() { // Load values from python and iap - try { - var results = await rpc.query({ - model: 'website', - method: 'configurator_init', - }); - } catch (_e) { - return {}; - } + var results = await rpc.query({ + model: 'website', + method: 'configurator_init', + }); const r = { features: {}, industries: results.industries,