diff --git a/addons/gamification/models/goal.py b/addons/gamification/models/goal.py
index 118991773ec..fb050753992 100644
--- a/addons/gamification/models/goal.py
+++ b/addons/gamification/models/goal.py
@@ -81,6 +81,8 @@ class gamification_goal_definition(osv.Model):
'model_id': fields.many2one('ir.model',
string='Model',
help='The model object for the field to evaluate'),
+ 'model_inherited_model_ids': fields.related('model_id', 'inherited_model_ids', type="many2many", obj="ir.model",
+ string="Inherited models", readonly="True"),
'field_id': fields.many2one('ir.model.fields',
string='Field to Sum',
help='The field containing the value to evaluate'),
@@ -160,6 +162,13 @@ class gamification_goal_definition(osv.Model):
return res
+ def on_change_model_id(self, cr, uid, ids, model_id, context=None):
+ """Prefill field model_inherited_model_ids"""
+ if not model_id:
+ return {'value': {'model_inherited_model_ids': []}}
+ model = self.pool['ir.model'].browse(cr, uid, model_id, context=context)
+ # format (6, 0, []) to construct the domain ('model_id', 'in', m and m[0] and m[0][2])
+ return {'value': {'model_inherited_model_ids': [(6, 0, [m.id for m in model.inherited_model_ids])]}}
class gamification_goal(osv.Model):
"""Goal instance for a user
diff --git a/addons/gamification/views/goal.xml b/addons/gamification/views/goal.xml
index e8081f4bc21..aac04eff859 100644
--- a/addons/gamification/views/goal.xml
+++ b/addons/gamification/views/goal.xml
@@ -244,9 +244,20 @@
-
-
-
+
+
+
+
diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py
index 2bc3302fac6..20070927e08 100644
--- a/openerp/addons/base/ir/ir_model.py
+++ b/openerp/addons/base/ir/ir_model.py
@@ -96,8 +96,9 @@ class ir_model(osv.osv):
return res
def _inherited_models(self, cr, uid, ids, field_name, arg, context=None):
- res = dict.fromkeys(ids, [])
+ res = {}
for model in self.browse(cr, uid, ids, context=context):
+ res[model.id] = []
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)