Files
test/web_studio/wizard/base_module_uninstall.py
2023-04-14 17:42:23 +08:00

62 lines
2.2 KiB
Python

# -*- coding: utf-8 -*-
# Part of Odoo. See LICENSE file for full copyright and licensing details.
from odoo import models, fields, api
class BaseModuleUninstall(models.TransientModel):
_inherit = "base.module.uninstall"
is_studio = fields.Boolean(compute='_compute_is_studio')
custom_views = fields.Integer(compute='_compute_custom_views')
custom_reports = fields.Integer(compute='_compute_custom_reports')
custom_models = fields.Integer(compute='_compute_custom_models')
custom_fields = fields.Integer(compute='_compute_custom_fields')
@api.depends('module_ids')
def _compute_is_studio(self):
for wizard in self:
wizard.is_studio = 'web_studio' in wizard.module_ids.mapped('name')
@api.depends('module_ids')
def _compute_custom_views(self):
for wizard in self:
view_ids = self.env['ir.model.data'].search([
('module', '=', 'studio_customization'),
('model', '=', 'ir.ui.view'),
]).mapped('res_id')
wizard.custom_views = self.env['ir.ui.view'].search_count([
('id', 'in', view_ids),
('type', '!=', 'qweb'),
])
@api.depends('module_ids')
def _compute_custom_reports(self):
for wizard in self:
wizard.custom_reports = self.env['ir.model.data'].search_count([
('module', '=', 'studio_customization'),
('model', '=', 'ir.actions.report'),
])
def _get_models(self):
# Overridden to include customizations made with studio
res = super()._get_models()
if self.is_studio:
res |= self.env['ir.model'].search([
('transient', '=', False),
('state', '=', 'manual')
])
return res
@api.depends('model_ids')
def _compute_custom_models(self):
for wizard in self:
wizard.custom_models = len(wizard.model_ids.filtered(lambda x: x.state == 'manual'))
@api.depends('module_ids')
def _compute_custom_fields(self):
for wizard in self:
wizard.custom_fields = self.env['ir.model.fields'].search_count([
('state', '=', 'manual'),
])