From 7d3bf223471c7c9e36376ba2f1c6095ab967446a Mon Sep 17 00:00:00 2001 From: Christophe Matthieu Date: Mon, 28 Jan 2013 14:30:03 +0100 Subject: [PATCH] [IMP] res_user: we can add 'default_groups_ref' inside the context to set default value for group_id with xml values bzr revid: chm@openerp.com-20130128133003-rl1xem6hqhlkh621 --- openerp/addons/base/res/res_users.py | 13 +++++++++++++ openerp/addons/base/res/res_users_view.xml | 2 +- 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/openerp/addons/base/res/res_users.py b/openerp/addons/base/res/res_users.py index df83f0a..e380664 100644 --- a/openerp/addons/base/res/res_users.py +++ b/openerp/addons/base/res/res_users.py @@ -778,6 +778,19 @@ class users_view(osv.osv): values['groups_id'] = [(3, id) for id in remove] + [(4, id) for id in add] def default_get(self, cr, uid, fields, context=None): + # add "default_groups_ref" inside the context to set default value for group_id with xml values + if context.get("default_groups_ref", None) and isinstance(context.get("default_groups_ref"), list): + context['default_groups_id'] = [] + ir_model_data = self.pool.get('ir.model.data') + for group in context.get("default_groups_ref"): + group_split = group.split('.') + if len(group_split) != 2 or \ + not group_split[0] or not isinstance(group_split[0], (str, unicode, basestring)) or \ + not group_split[1] or not isinstance(group_split[1], (str, unicode, basestring)): + raise osv.except_osv(_('Invalid context value'), _('Invalid context default_groups_ref value (model.name_id) : "%s"') % group) + model_data_ids = ir_model_data.search(cr, SUPERUSER_ID, [('model', '=', 'res.groups'), ('module', '=', group_split[0]), ('name', '=', group_split[1])]) + context['default_groups_id'] += [group_data['res_id'] for group_data in ir_model_data.read(cr, SUPERUSER_ID, model_data_ids, ['res_id'])] + group_fields, fields = partition(is_reified_group, fields) fields1 = (fields + ['groups_id']) if group_fields else fields values = super(users_view, self).default_get(cr, uid, fields1, context) diff --git a/openerp/addons/base/res/res_users_view.xml b/openerp/addons/base/res/res_users_view.xml index 1c858bb..9d6b334 100644 --- a/openerp/addons/base/res/res_users_view.xml +++ b/openerp/addons/base/res/res_users_view.xml @@ -125,7 +125,7 @@ - + -- 1.7.10.4