40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
			
		
		
	
	
			40 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Python
		
	
	
# Copyright 2018 Ivan Yelizariev <https://it-projects.info/team/yelizariev>
 | 
						|
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html).
 | 
						|
 | 
						|
import logging
 | 
						|
 | 
						|
from odoo import models, api
 | 
						|
 | 
						|
 | 
						|
_logger = logging.getLogger(__name__)
 | 
						|
 | 
						|
 | 
						|
class IrModelData(models.Model):
 | 
						|
    _inherit = 'ir.model.data'
 | 
						|
 | 
						|
    @api.model
 | 
						|
    def create(self, vals):
 | 
						|
        """Catch cases of creating customize_show views. Reload theme to make new
 | 
						|
        customize_show view available right after new module installation. It's
 | 
						|
        also needed for CI tests when another modules expects new item in
 | 
						|
        "Customize menu".
 | 
						|
 | 
						|
        We cannot override ir.ui.view model to do it, because it's created
 | 
						|
        before creating ir.model.data, which is essential for
 | 
						|
        multi_theme_reload
 | 
						|
 | 
						|
        FIXME: themes are reloaded as much times as new module has views with
 | 
						|
        customize_show
 | 
						|
        """
 | 
						|
 | 
						|
        res = super(IrModelData, self).create(vals)
 | 
						|
        if (vals.get('model') == 'ir.ui.view' and
 | 
						|
                not self.env.context.get('duplicate_view_for_website')):
 | 
						|
            view = self.env['ir.ui.view'].browse(vals.get('res_id'))
 | 
						|
            if view.customize_show:
 | 
						|
                _logger.debug('Call multi_theme_reload '
 | 
						|
                              'after creating Customize View "%s"',
 | 
						|
                              vals.get('name'))
 | 
						|
                self.env['res.config.settings'].multi_theme_reload()
 | 
						|
        return res
 |