diff options
| author | qsm-odoo <qsm@odoo.com> | 2020-06-26 09:20:58 +0000 |
|---|---|---|
| committer | qsm-odoo <qsm@odoo.com> | 2020-06-26 14:00:44 +0000 |
| commit | f7ff02b0fbb865937fb19c3f8fb317f60528eddf (patch) | |
| tree | 7bbcb37a08e43515e30e06970c4d19c55593d312 /addons/website/models/ir_module_module.py | |
| parent | e8dfbbd1c4c319be7b97bb4c614a4a1d4e1142dc (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.py | 5 |
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 |
