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())
 |