From afc8dde97af18025b6d17ca958ce154e7bb3aa93 Mon Sep 17 00:00:00 2001 From: Jorge Pinna Puissant Date: Fri, 10 Nov 2023 09:46:31 +0100 Subject: [PATCH] [FIX] base, web: log correctly error in assets MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Since [1], when an error exists in an asset, the assets raise a not found exception. The issue, is that, there is no feedback for the developer to find the error. Now, a new console log with the error details is shown. [1] : bf3b6b0b8b2277757b242b28c65c05433632f467 closes odoo/odoo#141705 Signed-off-by: Xavier Dollé (xdo) --- addons/web/controllers/binary.py | 1 + addons/website/tests/test_assets.py | 2 +- odoo/addons/base/models/ir_asset.py | 12 +++--------- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/addons/web/controllers/binary.py b/addons/web/controllers/binary.py index a59fd3a7737..a1a66adc80f 100644 --- a/addons/web/controllers/binary.py +++ b/addons/web/controllers/binary.py @@ -129,6 +129,7 @@ class Binary(http.Controller): elif js and bundle.javascripts: attachment = bundle.js() except ValueError as e: + _logger.error(e.args[0]) raise request.not_found() from e if not attachment: raise request.not_found() diff --git a/addons/website/tests/test_assets.py b/addons/website/tests/test_assets.py index 0b1f76e3865..2ff336a9cfe 100644 --- a/addons/website/tests/test_assets.py +++ b/addons/website/tests/test_assets.py @@ -105,7 +105,7 @@ class TestWebAssets(odoo.tests.HttpCase): def test_assets_url_validation(self): website_id = self.env['website'].search([], limit=1, order='id desc').id - with odoo.tools.mute_logger('odoo.addons.base.models.ir_asset'): + with odoo.tools.mute_logger('odoo.addons.web.controllers.binary'): self.assertEqual( self.url_open(f'/web/assets/{website_id}/debug/hello/web.assets_frontend.css', allow_redirects=False).status_code, 404, diff --git a/odoo/addons/base/models/ir_asset.py b/odoo/addons/base/models/ir_asset.py index 6885d93cdb9..54d0f078378 100644 --- a/odoo/addons/base/models/ir_asset.py +++ b/odoo/addons/base/models/ir_asset.py @@ -107,21 +107,15 @@ class IrAsset(models.Model): if not debug_assets: bundle_name, min_ = bundle_name.rsplit('.', 1) if min_ != 'min': - msg = "'min' expected in extension in non debug mode" - _logger.error(msg) - raise ValueError(msg) + raise ValueError("'min' expected in extension in non debug mode") if asset_type == 'css': if bundle_name.endswith('.rtl'): bundle_name = bundle_name[:-4] rtl = True elif asset_type != 'js': - msg = 'Only js and css assets bundle are supported for now' - _logger.error(msg) - raise ValueError(msg) + raise ValueError('Only js and css assets bundle are supported for now') if len(bundle_name.split('.')) != 2: - msg = f'{bundle_name} is not a valid bundle name, should have two parts' - _logger.error(msg) - raise ValueError(msg) + raise ValueError(f'{bundle_name} is not a valid bundle name, should have two parts') return bundle_name, rtl, asset_type @tools.conditional(