summaryrefslogtreecommitdiff
path: root/addons/website/models/ir_module_module.py
diff options
context:
space:
mode:
authorqsm-odoo <qsm@odoo.com>2020-06-26 09:20:58 +0000
committerqsm-odoo <qsm@odoo.com>2020-06-26 14:00:44 +0000
commitf7ff02b0fbb865937fb19c3f8fb317f60528eddf (patch)
tree7bbcb37a08e43515e30e06970c4d19c55593d312 /addons/website/models/ir_module_module.py
parente8dfbbd1c4c319be7b97bb4c614a4a1d4e1142dc (diff)
[FIX] website_theme_install: properly reset config on theme change
Before this commit, some code was resetting some default website config on theme change. Problem 1: This was not done when *removing* a theme. Thus when you wanted to go back to a default website theme, you were not properly reset to the default theme config. This could actually crash: some themes define more fonts than others; so if you selected font 13 in one theme then removed the theme, the default one would crash if not properly reset as font 13 would not exist. Problem 2: It was done for every theme dependency, making theme change slower for no reason. Problem 3 (theorically, not tested): The current code worked by chance as it called the website 'make_scss_customization' method without giving any website to it. It actually worked by fallback on the right website in normal user cases (user in the context of installing a theme on a specific website) but may not be working when trying to install a theme on a different website calling those functions from custom code. Now, a dedicated method is there for config reset and is called at the correct place with the right website in the context. closes odoo/odoo#53743 X-original-commit: 7307d696449ea2b7a231b0b9087e64f6bbf65d26 Signed-off-by: Quentin Smetz (qsm) <qsm@odoo.com>
Diffstat (limited to 'addons/website/models/ir_module_module.py')
-rw-r--r--addons/website/models/ir_module_module.py5
1 files changed, 5 insertions, 0 deletions
diff --git a/addons/website/models/ir_module_module.py b/addons/website/models/ir_module_module.py
index 8307022dd4d..2ad142a8ffb 100644
--- a/addons/website/models/ir_module_module.py
+++ b/addons/website/models/ir_module_module.py
@@ -325,6 +325,11 @@ class IrModuleModule(models.Model):
:param website: ``website`` model for which the themes have to be removed
"""
+ # _theme_remove is the entry point of any change of theme for a website
+ # (either removal or installation of a theme and its dependencies). In
+ # either case, we need to reset some default configuration before.
+ self.env['theme.utils'].with_context(website_id=website.id)._reset_default_config()
+
if not website.theme_id:
return