summaryrefslogtreecommitdiff
path: root/addons/website_theme_install
diff options
context:
space:
mode:
authorqsm-odoo <qsm@odoo.com>2018-11-16 17:21:28 +0000
committerqsm-odoo <qsm@odoo.com>2018-11-19 10:25:26 +0000
commit30e937cf74bc72b76fcc1269a4a4504a7ea0a70f (patch)
treee4f3c04fa10e3824ac6f2e9088a1217b3feed610 /addons/website_theme_install
parent551eb34f928d0ba00168dcfe2de3709bbd274e67 (diff)
[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
Diffstat (limited to 'addons/website_theme_install')
-rw-r--r--addons/website_theme_install/models/theme_models.py15
1 files changed, 14 insertions, 1 deletions
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