769eafb483
Flectra is Forked from Odoo v11 commit : (6135e82d73
)
63 lines
2.6 KiB
Python
63 lines
2.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Part of Odoo. See LICENSE file for full copyright and licensing details.
|
|
|
|
import os
|
|
|
|
from odoo import api, fields, models
|
|
|
|
|
|
class IrModuleModule(models.Model):
|
|
_name = "ir.module.module"
|
|
_inherit = _name
|
|
|
|
image_ids = fields.One2many('ir.attachment', 'res_id',
|
|
domain=[('res_model', '=', _name), ('mimetype', '=like', 'image/%')],
|
|
string='Screenshots', readonly=True)
|
|
|
|
@api.model
|
|
def update_list(self):
|
|
res = super(IrModuleModule, self).update_list()
|
|
|
|
IrAttachment = self.env['ir.attachment']
|
|
existing_urls = IrAttachment.search_read([['res_model', '=', self._name], ['type', '=', 'url']], ['url'])
|
|
existing_urls = [url_wrapped['url'] for url_wrapped in existing_urls]
|
|
|
|
for app in self.search([]):
|
|
terp = self.get_module_info(app.name)
|
|
images = terp.get('images', [])
|
|
for image in images:
|
|
image_path = os.path.join(app.name, image)
|
|
if image_path not in existing_urls:
|
|
image_name = os.path.basename(image_path)
|
|
IrAttachment.create({
|
|
'type': 'url',
|
|
'name': image_name,
|
|
'datas_fname': image_name,
|
|
'url': image_path,
|
|
'res_model': self._name,
|
|
'res_id': app.id,
|
|
})
|
|
|
|
return res
|
|
|
|
@api.multi
|
|
def button_choose_theme(self):
|
|
theme_category = self.env.ref('base.module_category_theme', False)
|
|
hidden_category = self.env.ref('base.module_category_hidden', False)
|
|
theme_hidden_category = self.env.ref('base.module_category_theme_hidden', False)
|
|
|
|
theme_category_id = theme_category.id if theme_category else 0
|
|
hidden_categories_ids = [hidden_category.id if hidden_category else 0, theme_hidden_category.id if theme_hidden_category else 0]
|
|
|
|
self.search([ # Uninstall the theme(s) which is (are) installed
|
|
('state', '=', 'installed'),
|
|
'|', ('category_id', 'not in', hidden_categories_ids), ('name', '=', 'theme_default'),
|
|
'|', ('category_id', '=', theme_category_id), ('category_id.parent_id', '=', theme_category_id)
|
|
]).button_immediate_uninstall()
|
|
|
|
next_action = self.button_immediate_install() # Then install the new chosen one
|
|
if next_action.get('tag') == 'reload' and not next_action.get('params', {}).get('menu_id'):
|
|
next_action = self.env.ref('website.action_website').read()[0]
|
|
|
|
return next_action
|