Files
design-themes/test_themes/__init__.py
T
Denis Ledoux 1c01209d32 [IMP] base, *: change the API of init hooks to pass env
This is mostly a cleaning/refactoring change.

The current API for init hooks (pre, post, uninstall) is to pass
`cr, registry`.
But the first thing which was done by most
post init and uninstall hooks was to create an env using
the cr passed
e.g.
`env = api.Environment(cr, SUPERUSER_ID, {})`
and the `registry` argument was unused in all these hooks,
completely.

By changing the API of hooks to pass `env` instead
of `cr, registry`, we gain in average two lines in every
hooks:
- the line creating the env `env = api.Environment(cr, SUPERUSER_ID, {})`
- the line importing `api` and `SUPERUSER_ID`

Therefore removing ~250 lines of repeated code lines accross odoo/odoo and
odoo/enterprise.
In addition to these lines removed,
it also ease the API of init hooks for Odoo developers,
who are used to that `env` and not so much how to create an `env`
from a cursor.

closes odoo/design-themes#631

Related: odoo/enterprise#35084
Related: odoo/upgrade#4144
Related: odoo/odoo#108254
Signed-off-by: Denis Ledoux (dle) <dle@odoo.com>
2023-02-01 10:24:50 +01:00

26 lines
930 B
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from . import models
def post_init_hook(env):
''' Create a new website for each theme and install the theme on it. '''
IrModule = env['ir.module.module']
themes = IrModule.search(IrModule.get_themes_domain(), order='name')
assert len(themes) == len(env.ref('base.module_test_themes').dependencies_id)
xmlids = []
for theme in themes:
website = env['website'].create({
'name': theme.display_name,
'theme_id': theme.id,
})
xmlids.append({
'xml_id': 'test_themes.%s' % theme.display_name.replace(' ', '_'),
'record': website,
'noupdate': True, # Avoid unlink on -u
})
theme.with_context(apply_new_theme=True)._theme_get_stream_themes()._theme_load(website)
env['ir.model.data']._update_xmlids(xmlids)