diff --git a/openerp/addons/base/res/res_user.py b/openerp/addons/base/res/res_user.py index fdd8fc7302e..f8c5c034f61 100644 --- a/openerp/addons/base/res/res_user.py +++ b/openerp/addons/base/res/res_user.py @@ -623,6 +623,8 @@ def get_boolean_group(name): return int(name[9:]) def get_boolean_groups(name): return map(int, name[10:].split('_')) def get_selection_groups(name): return map(int, name[11:].split('_')) +def encode(s): return s.encode('utf8') if isinstance(s, unicode) else s + class users2(osv.osv): _inherit = 'res.users' @@ -635,7 +637,7 @@ class users2(osv.osv): (add if values.pop(k) else rem).append(get_boolean_group(k)) elif is_boolean_groups(k): if not values.pop(k): - rem.extend(get_selection_groups(k)) + rem.extend(get_boolean_groups(k)) elif is_selection_groups(k): rem.extend(get_selection_groups(k)) add.append(int(values.pop(k))) @@ -689,7 +691,7 @@ class users2(osv.osv): res = super(users2, self).fields_view_get(cr, uid, view_id, view_type, context, toolbar, submenu) if view_type == 'form': - root = etree.fromstring(res['arch']) + root = etree.fromstring(encode(res['arch'])) nodes = root.xpath("//field[@name='groups_id']") if nodes: # replace node by the reified group fields @@ -698,6 +700,7 @@ class users2(osv.osv): apps, others = self.pool.get('res.groups').get_classified(cr, uid, context) # create section Applications elems.append('' % _('Applications')) + elems.append('') for app, selection in apps: ids = [id for id, name in selection] app_name = name_boolean_groups(ids) @@ -705,8 +708,9 @@ class users2(osv.osv): fields[app_name] = {'type': 'boolean', 'string': app} fields[sel_name] = {'type': 'selection', 'string': '', 'selection': selection} elems.append('' % app_name) - elems.append('' % sel_name) + elems.append("""""" % (sel_name, app_name)) elems.append('') + elems.append('') # create other sections sections = sorted(others.items(), key=lambda pair: pair[0]) if sections and sections[0][0] is None: