60 lines
1.9 KiB
Python
60 lines
1.9 KiB
Python
# Copyright 2018 Ivan Yelizariev <https://it-projects.info/team/yelizariev>
|
|
# Copyright 2018 Ildar Nasyrov <https://it-projects.info/team/iledarn>
|
|
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
|
|
|
|
import logging
|
|
from odoo import models, fields, api
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
|
|
class WebsiteTheme(models.Model):
|
|
_inherit = 'website.theme'
|
|
|
|
name = fields.Char(string="Theme")
|
|
converted_theme_addon = fields.Char(
|
|
string="Theme's technical name",
|
|
help="")
|
|
|
|
@api.multi
|
|
def _convert_assets(self):
|
|
"""Generate assets for converted themes"""
|
|
for one in self:
|
|
assets_before = one.asset_ids
|
|
super(WebsiteTheme, one)._convert_assets()
|
|
assets_after = one.asset_ids
|
|
if not assets_before and assets_after:
|
|
# new theme: update dependencies
|
|
one.write(one._autofill_deps())
|
|
|
|
@api.multi
|
|
def _autofill_deps(self):
|
|
self.ensure_one()
|
|
modules = self\
|
|
.env['ir.module.module']\
|
|
._search_theme_dependencies(
|
|
self.converted_theme_addon
|
|
).mapped('name')
|
|
|
|
existing_themes = self.search([
|
|
('converted_theme_addon', 'in', modules)
|
|
]).mapped('converted_theme_addon')
|
|
new_themes = set(modules) - set(existing_themes)
|
|
for converted_theme_addon in new_themes:
|
|
self.create({
|
|
'name': converted_theme_addon,
|
|
'converted_theme_addon': converted_theme_addon,
|
|
})
|
|
themes = self.search([('converted_theme_addon', 'in', modules)])
|
|
try:
|
|
themes |= self.env.ref('website_multi_theme.theme_default')
|
|
except:
|
|
pass
|
|
return {
|
|
'dependency_ids': [(6, 0, themes.ids)],
|
|
}
|
|
|
|
@api.onchange('converted_theme_addon')
|
|
def onchange_converted_theme_addon(self):
|
|
self.update(self._autofill_deps())
|