diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index 461f717ae94..2bc3302fac6 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -95,11 +95,21 @@ class ir_model(osv.osv): res[model.id] = self.pool["ir.ui.view"].search(cr, uid, [('model', '=', model.model)]) return res + def _inherited_models(self, cr, uid, ids, field_name, arg, context=None): + res = dict.fromkeys(ids, []) + for model in self.browse(cr, uid, ids, context=context): + inherited_models = [model_name for model_name in self.pool[model.model]._inherits] + if inherited_models: + res[model.id] = self.search(cr, uid, [('model', 'in', inherited_models)], context=context) + return res + _columns = { 'name': fields.char('Model Description', translate=True, required=True), 'model': fields.char('Model', required=True, select=1), 'info': fields.text('Information'), 'field_id': fields.one2many('ir.model.fields', 'model_id', 'Fields', required=True, copy=True), + 'inherited_model_ids': fields.function(_inherited_models, type="many2many", obj="ir.model", string="Inherited models", + help="The list of models that extends the current model."), 'state': fields.selection([('manual','Custom Object'),('base','Base Object')],'Type', readonly=True), 'access_ids': fields.one2many('ir.model.access', 'model_id', 'Access'), 'osv_memory': fields.function(_is_osv_memory, string='Transient Model', type='boolean',