diff --git a/trytond/ir/model.py b/trytond/ir/model.py index 37c98a3acb..d00a922f33 100644 --- a/trytond/ir/model.py +++ b/trytond/ir/model.py @@ -234,15 +234,21 @@ class ModelData(OSV): "data with the wrong model.") object_ref = self.pool.get(model) # XXX maybe use a browse instead: - db_values = object_ref.read(cursor, user, db_id, values.keys()) + db_values = object_ref.browse(cursor, user, db_id) to_update = {} for key in values: - # first handle correctly the datas returned by read() - if object_ref._columns[key]._type == 'many2one': - db_field = db_values[key] and db_values[key][0] or False - elif object_ref._columns[key]._type in ['one2one', 'one2many', "many2many"]: + # search the field type in the object or in a parent + if key in object_ref._columns: + field_type = object_ref._columns[key]._type + else: + field_type = object_ref._inherit_fields[key][2]._type + + # handle the value regarding to the type + if field_type == 'many2one': + db_field = db_values[key] and db_values[key].id or False + elif field_type in ['one2one', 'one2many', "many2many"]: logger = Logger() logger.notify_channel('init', LOG_WARNING, 'Field %s on %s : integrity not tested.'%(key, model)) diff --git a/trytond/res/user.py b/trytond/res/user.py index 100778cf74..d19e58c6f4 100644 --- a/trytond/res/user.py +++ b/trytond/res/user.py @@ -69,7 +69,7 @@ class User(OSV): 'action_id': fields.Many2One('ir.action', 'Home Action'), 'menu_id': fields.Many2One('ir.action', 'Menu Action'), 'groups_id': fields.Many2Many('res.group', 'res_group_user_rel', - 'uid', 'gid', 'Groups'), + 'uid', 'gid', 'Groups'), 'roles_id': fields.Many2Many('res.role', 'res_role_user_rel', 'uid', 'rid', 'Roles'), #'company_id': fields.Many2One('res.company', 'Company'),