odoo/ext/3rd-party-addons/website_multi_company/models/module.py

39 lines
1.6 KiB
Python

# Copyright 2018 Ivan Yelizariev <https://it-projects.info/team/yelizariev>
# License LGPL-3.0 or later (https://www.gnu.org/licenses/lgpl.html).
from odoo import models, api
BASE_MODULES = ['website_blog', 'website_sale_comparison', 'website_sale_wishlist', 'web_settings_dashboard', 'website_crm', 'website_animate', 'website_mass_mailing', 'contacts', 'fetchmail', 'resource', 'calendar', 'snippet_google_map']
class Module(models.Model):
_inherit = "ir.module.module"
@api.model
def _search(self, args, offset=0, limit=None, order=None, count=False, access_rights_uid=None):
if self.env.context.get('search_theme_dependencies'):
args = args or []
args += self._theme_dependencies_domain(self.env.context.get('search_theme_dependencies'))
return super(Module, self)._search(args, offset, limit, order, count, access_rights_uid)
@api.model
def _search_theme_dependencies(self, theme_name):
"""Search dependencies of the theme, but without built-in dependencies"""
if not theme_name:
return self
self = self.with_context(search_theme_dependencies=False)
theme = self.search([('name', '=', theme_name)])
if not theme:
return self
deps = theme.upstream_dependencies(exclude_states=('to remove'))
base_modules = self.search([('name', 'in', BASE_MODULES)])
base_deps = base_modules.upstream_dependencies(exclude_states=('to remove'))
deps -= base_modules
deps -= base_deps
return self.search([('id', 'in', deps.ids)])