diff --git a/trytond/res/user.py b/trytond/res/user.py index d803350241..3f75f30c1e 100644 --- a/trytond/res/user.py +++ b/trytond/res/user.py @@ -47,7 +47,7 @@ class User(OSV): 'active': fields.Boolean('Active'), 'action': fields.Many2One('ir.action', 'Home Action'), 'menu': fields.Many2One('ir.action', 'Menu Action'), - 'groups_id': fields.Many2Many('res.group', 'res_group_user_rel', + 'groups': fields.Many2Many('res.group', 'res_group_user_rel', 'uid', 'gid', 'Groups'), 'rule_groups': fields.Many2Many('ir.rule.group', 'user_rule_group_rel', 'user_id', 'rule_group_id', 'Rules', @@ -75,6 +75,7 @@ class User(OSV): _context_fields = [ 'language', 'timezone', + 'groups', ] def __init__(self, pool): @@ -157,12 +158,12 @@ class User(OSV): return res def set_preferences(self, cursor, user, values, context=None): - values = values.copy() + values_clean = values.copy() fields = self._preferences_fields + self._context_fields for field in values: - if field not in fields: - del values[field] - self.write(cursor, 1, user, values, context=context) + if field not in fields or field == 'groups': + del values_clean[field] + self.write(cursor, 1, user, values_clean, context=context) def get_preferences_fields_view(self, cursor, user, context=None): res = {} @@ -179,7 +180,10 @@ class User(OSV): arch, fields = self._view_look_dom_arch(cursor, user, doc, context=context) for field in fields: - fields[field]['readonly'] = False + if field not in ('groups'): + fields[field]['readonly'] = False + else: + fields[field]['readonly'] = True res['arch'] = arch res['fields'] = fields return res diff --git a/trytond/res/user.xml b/trytond/res/user.xml index 2f6b72fc64..16369c5afa 100644 --- a/trytond/res/user.xml +++ b/trytond/res/user.xml @@ -11,7 +11,7 @@ Administrator - + res.user @@ -40,8 +40,8 @@ - - + + diff --git a/trytond/wkf_service/wkf_expr.py b/trytond/wkf_service/wkf_expr.py index 8a8b4babc5..b8aa4dfca8 100644 --- a/trytond/wkf_service/wkf_expr.py +++ b/trytond/wkf_service/wkf_expr.py @@ -66,7 +66,7 @@ def check(cursor, ident, transition, signal): user = ident[0] serv = netsvc.LocalService('object_proxy') user_groups = serv.execute_cr(cursor, user, 'res.user', 'read', user, - ['groups_id'])['groups_id'] + ['groups'])['groups'] res = transition['group'] in user_groups res = res and eval_expr(cursor, ident, transition['condition']) return res