From 30e937cf74bc72b76fcc1269a4a4504a7ea0a70f Mon Sep 17 00:00:00 2001 From: qsm-odoo Date: Fri, 16 Nov 2018 17:21:28 +0000 Subject: [PATCH] [FIX] website_theme_install: review post copy view toggling If a theme post copy wants to enable/disable a view, this is to enable/disable a given functionality which is disabled/enabled by default. So if a post copy asks to enable/disable a view which is already enabled/disabled, we would not consider it otherwise it would COW the view for nothing. closes odoo/odoo#28772 --- .../website_theme_install/models/theme_models.py | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/addons/website_theme_install/models/theme_models.py b/addons/website_theme_install/models/theme_models.py index e0f6d8414ac..ddfd4469589 100644 --- a/addons/website_theme_install/models/theme_models.py +++ b/addons/website_theme_install/models/theme_models.py @@ -161,10 +161,23 @@ class Theme(models.AbstractModel): @api.model def _toggle_view(self, xml_id, active): obj = self.env.ref(xml_id) + website = self.env['website'].get_current_website() if obj._name == 'theme.ir.ui.view': - website = self.env['website'].get_current_website() obj = obj.with_context(active_test=False) obj = obj.copy_ids.filtered(lambda x: x.website_id == website) + else: + # If a theme post copy wants to enable/disable a view, this is to + # enable/disable a given functionality which is disabled/enabled + # by default. So if a post copy asks to enable/disable a view which + # is already enabled/disabled, we would not consider it otherwise it + # would COW the view for nothing. + View = self.env['ir.ui.view'].with_context(active_test=False) + has_specific = obj.key and View.search_count([ + ('key', '=', obj.key), + ('website_id', '=', website.id) + ]) >= 1 + if not has_specific and active == obj.active: + return obj.write({'active': active}) @api.model