diff --git a/odoo/addons/base/models/ir_module.py b/odoo/addons/base/models/ir_module.py index 61772cbff0a..5cfb3156f09 100644 --- a/odoo/addons/base/models/ir_module.py +++ b/odoo/addons/base/models/ir_module.py @@ -248,15 +248,14 @@ class Module(models.Model): @api.depends('icon') def _get_icon_image(self): + self.icon_image = '' for module in self: - module.icon_image = '' + if not module.id: + continue if module.icon: - path_parts = module.icon.split('/') - path = os.path.join(path_parts[1], *path_parts[2:]) - elif module.id: - path = modules.module.get_module_icon_path(module) + path = os.path.join(module.icon.lstrip("/")) else: - path = '' + path = modules.module.get_module_icon_path(module) if path: try: with tools.file_open(path, 'rb') as image_file: diff --git a/odoo/addons/base/tests/__init__.py b/odoo/addons/base/tests/__init__.py index 314c5e4e602..515b927915a 100644 --- a/odoo/addons/base/tests/__init__.py +++ b/odoo/addons/base/tests/__init__.py @@ -24,6 +24,7 @@ from . import test_ir_filters from . import test_ir_http from . import test_ir_mail_server from . import test_ir_model +from . import test_ir_module from . import test_ir_sequence from . import test_ir_sequence_date_range from . import test_ir_default diff --git a/odoo/addons/base/tests/test_ir_module.py b/odoo/addons/base/tests/test_ir_module.py new file mode 100644 index 00000000000..65b18043144 --- /dev/null +++ b/odoo/addons/base/tests/test_ir_module.py @@ -0,0 +1,22 @@ +from odoo.tests.common import TransactionCase +from odoo.tools import mute_logger + + +class IrModuleCase(TransactionCase): + @mute_logger("odoo.modules.module") + def test_missing_module_icon(self): + module = self.env["ir.module.module"].create({"name": "missing"}) + base = self.env["ir.module.module"].search([("name", "=", "base")]) + self.assertEqual(base.icon_image, module.icon_image) + + @mute_logger("odoo.modules.module") + def test_new_module_icon(self): + module = self.env["ir.module.module"].new({"name": "missing"}) + self.assertFalse(module.icon_image) + + @mute_logger("odoo.modules.module") + def test_module_wrong_icon(self): + module = self.env["ir.module.module"].create( + {"name": "wrong_icon", "icon": "/not/valid.png"} + ) + self.assertFalse(module.icon_image)