diff --git a/odoo/addons/base/ir/ir_ui_menu.py b/odoo/addons/base/ir/ir_ui_menu.py index f37281e5773..b319f77f909 100644 --- a/odoo/addons/base/ir/ir_ui_menu.py +++ b/odoo/addons/base/ir/ir_ui_menu.py @@ -43,7 +43,7 @@ class IrUiMenu(models.Model): ('ir.actions.server', 'ir.actions.server'), ('ir.actions.client', 'ir.actions.client')]) - web_icon_data = fields.Binary(string='Web Icon Image', compute="_compute_web_icon", store=True, attachment=True) + web_icon_data = fields.Binary(string='Web Icon Image', attachment=True) @api.depends('name', 'parent_id.complete_name') def _compute_complete_name(self): @@ -59,18 +59,6 @@ class IrUiMenu(models.Model): else: return self.name - @api.depends('web_icon') - def _compute_web_icon(self): - """ Returns the image associated to `web_icon`. - `web_icon` can either be: - - an image icon [module, path] - - a built icon [icon_class, icon_color, background_color] - and it only has to call `read_image` if it's an image. - """ - for menu in self: - if menu.web_icon and len(menu.web_icon.split(',')) == 2: - menu.web_icon_data = self.read_image(menu.web_icon) - def read_image(self, path): if not path: return False @@ -157,13 +145,27 @@ class IrUiMenu(models.Model): @api.model def create(self, values): self.clear_caches() + if 'web_icon' in values: + values['web_icon_data'] = self._compute_web_icon_data(values.get('web_icon')) return super(IrUiMenu, self).create(values) @api.multi def write(self, values): self.clear_caches() + if 'web_icon' in values: + values['web_icon_data'] = self._compute_web_icon_data(values.get('web_icon')) return super(IrUiMenu, self).write(values) + def _compute_web_icon_data(self, web_icon): + """ Returns the image associated to `web_icon`. + `web_icon` can either be: + - an image icon [module, path] + - a built icon [icon_class, icon_color, background_color] + and it only has to call `read_image` if it's an image. + """ + if web_icon and len(web_icon.split(',')) == 2: + return self.read_image(web_icon) + @api.multi def unlink(self): # Detach children and promote them to top-level, because it would be unwise to diff --git a/odoo/addons/base/ir/ir_ui_menu_view.xml b/odoo/addons/base/ir/ir_ui_menu_view.xml index 1d6075085cf..8a42b511e66 100644 --- a/odoo/addons/base/ir/ir_ui_menu_view.xml +++ b/odoo/addons/base/ir/ir_ui_menu_view.xml @@ -16,6 +16,7 @@ +