Odoo Mindscape. Understand Odoo faster. Explore modules, fields, dependencies and version differences in one place instead of digging through the source code.

Module: Base

Entity: ir.module.module

Compute Method: _get_views

View 19.0
Inputs Method Outputs
  • state
  • name
  • model
  • res_id
- IrModelData = self.env['ir.model.data'].with_context(active_test=True)
- dmodels = ['ir.ui.view', 'ir.actions.report', 'ir.ui.menu']
- for module in self:
-             # Skip uninstalled modules below, no data to find anyway.
-             if module.state not in ('installed', 'to upgrade', 'to remove'):
-                 module.views_by_module = ""
-                 module.reports_by_module = ""
-                 module.menus_by_module = ""
-                 continue
- 
-             # then, search and group ir.model.data records
-             imd_models = defaultdict(list)
-             imd_domain = [('module', '=', module.name), ('model', 'in', tuple(dmodels))]
-             for data in IrModelData.sudo().search(imd_domain):
-                 imd_models[data.model].append(data.res_id)
- 
-             def browse(model):
-                 # as this method is called before the module update, some xmlid
-                 # may be invalid at this stage; explictly filter records before
-                 # reading them
-                 return self.env[model].browse(imd_models[model]).exists()
- 
-             def format_view(v):
-                 return '%s%s (%s)' % (v.inherit_id and '* INHERIT ' or '', v.name, v.type)
- 
-             module.views_by_module = "\n".join(sorted(format_view(v) for v in browse('ir.ui.view')))
-             module.reports_by_module = "\n".join(sorted(r.name for r in browse('ir.actions.report')))
-             module.menus_by_module = "\n".join(sorted(m.complete_name for m in browse('ir.ui.menu')))
  • views_by_module
  • reports_by_module
  • menus_by_module

Back to entity