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