From 7111ec0b7b18246d29c6c2f42e0814bd551faa48 Mon Sep 17 00:00:00 2001 From: Goffin Simon Date: Thu, 14 Jul 2016 13:29:16 +0200 Subject: [PATCH] [IMP] web, openerp: Remove the function ir_set on model ir.model.data The function ir_set is deprecated since 9.0 Refactorisation of load_actions_from_ir_values --- addons/web/controllers/main.py | 23 +++++--------------- openerp/addons/base/ir/ir_model.py | 13 ------------ openerp/tools/convert.py | 16 ++++++++++++-- openerp/tools/yaml_import.py | 34 ++++++++++++++++++------------ 4 files changed, 40 insertions(+), 46 deletions(-) diff --git a/addons/web/controllers/main.py b/addons/web/controllers/main.py index 47141c4c215..4929e890d7a 100644 --- a/addons/web/controllers/main.py +++ b/addons/web/controllers/main.py @@ -295,21 +295,10 @@ def set_cookie_and_redirect(redirect_url): redirect.autocorrect_location_header = False return redirect -def load_actions_from_ir_values(key, key2, models, meta): - Values = request.session.model('ir.values') - actions = [] - for model in models: - res_id = False - if isinstance(model, (list, tuple)): - model, res_id = model - if key == 'default': - action = Values.get_defaults(model, condition=key2, context=request.context) - elif key == 'action': - action = Values.get_actions(action_slot=key2, model=model, res_id=res_id, context=request.context) - actions.append(action) - - return [(id, name, clean_action(action)) - for id, name, action in actions] +def load_actions_from_ir_values(action_slot, model, res_id): + ir_values = request.session.model('ir.values') + actions = ir_values.get_actions(action_slot=action_slot, model=model, res_id=res_id, context=request.context) + return [(id, name, clean_action(action)) for id, name, action in actions] def clean_action(action): action.setdefault('flags', {}) @@ -945,9 +934,7 @@ class TreeView(View): @http.route('/web/treeview/action', type='json', auth="user") def action(self, model, id): - return load_actions_from_ir_values( - 'action', 'tree_but_open',[(model, id)], - False) + return load_actions_from_ir_values('tree_but_open', model, id) class Binary(http.Controller): diff --git a/openerp/addons/base/ir/ir_model.py b/openerp/addons/base/ir/ir_model.py index b9e65eeca99..c4e6af26687 100644 --- a/openerp/addons/base/ir/ir_model.py +++ b/openerp/addons/base/ir/ir_model.py @@ -1097,19 +1097,6 @@ class IrModelData(models.Model): return record.id - @api.model - def ir_set(self, key, key2, name, models, value, replace=True, isobject=False, meta=None, xml_id=False): - ir_values = self.env['ir.values'] - for model in models: - res_id = False - if isinstance(model, (list, tuple)): - model, res_id = model - if key == 'default': - ir_values.set_default(model, field_name=name, value=value, condition=key2) - elif key == 'action': - return ir_values.set_action(name, action_slot=key2, model=model, action=value, res_id=res_id) - return True - @api.model def _module_data_uninstall(self, modules_to_remove): """Deletes all the records referenced by the ir.model.data entries diff --git a/openerp/tools/convert.py b/openerp/tools/convert.py index 3faca4d46a3..aa3a927d17c 100644 --- a/openerp/tools/convert.py +++ b/openerp/tools/convert.py @@ -453,10 +453,14 @@ form: module.record_id""" % (xml_id,) if src_model: #keyword = 'client_action_relate' + res_id = False + model = src_model + if isinstance(model, (list, tuple)): + model, res_id = model keyword = rec.get('key2','').encode('utf-8') or 'client_action_relate' value = 'ir.actions.act_window,'+str(id) replace = rec.get('replace','') or True - self.pool['ir.model.data'].ir_set(cr, self.uid, 'action', keyword, xml_id, [src_model], value, replace=replace, isobject=True, xml_id=xml_id) + self.pool['ir.values'].set_action(cr, self.uid, xml_id, action_slot=keyword, model=model, action=value, res_id=res_id) # TODO add remove ir.model.data def _tag_ir_set(self, cr, rec, data_node=None, mode=None): @@ -472,7 +476,15 @@ form: module.record_id""" % (xml_id,) f_name = field.get("name",'').encode('utf-8') f_val = _eval_xml(self,field,self.pool, cr, self.uid, self.idref) res[f_name] = f_val - self.pool['ir.model.data'].ir_set(cr, self.uid, res['key'], res['key2'], res['name'], res['models'], res['value'], replace=res.get('replace',True), isobject=res.get('isobject', False), meta=res.get('meta',None)) + ir_values = self.env['ir.values'] + for model in res['models']: + res_id = False + if isinstance(model, (list, tuple)): + model, res_id = model + if res['key'] == 'default': + ir_values.set_default(cr, self.uid, model, field_name=res['name'], value=res['value'], condition=res['key2']) + elif res['key'] == 'action': + ir_values.set_action(cr, self.uid, res['name'], action_slot=res['key2'], model=model, action=res['value'], res_id=res_id) def _tag_workflow(self, cr, rec, data_node=None, mode=None): if self.isnoupdate(data_node) and self.mode != 'init': diff --git a/openerp/tools/yaml_import.py b/openerp/tools/yaml_import.py index dcbf999919c..a509261e3e7 100644 --- a/openerp/tools/yaml_import.py +++ b/openerp/tools/yaml_import.py @@ -779,9 +779,11 @@ class YamlInterpreter(object): if node.src_model: keyword = 'client_action_relate' value = 'ir.actions.act_window,%s' % id - replace = node.replace or True - self.pool['ir.model.data'].ir_set(self.cr, SUPERUSER_ID, 'action', keyword, \ - node.id, [node.src_model], value, replace=replace, noupdate=self.isnoupdate(node), isobject=True, xml_id=node.id) + res_id = False + model = node.src_model + if isinstance(model, (list, tuple)): + model, res_id = model + self.env['ir.values'].sudo().set_action(node.id, action_slot=keyword, model=model, action=value, res_id=res_id) # TODO add remove ir.model.data def process_delete(self, node): @@ -808,10 +810,7 @@ class YamlInterpreter(object): if (not node.menu or eval(node.menu)) and id: keyword = node.keyword or 'client_action_multi' value = 'ir.actions.act_url,%s' % id - replace = node.replace or True - self.pool['ir.model.data'].ir_set(self.cr, SUPERUSER_ID, 'action', \ - keyword, node.url, ["ir.actions.act_url"], value, replace=replace, \ - noupdate=self.isnoupdate(node), isobject=True, xml_id=node.id) + self.env['ir.values'].sudo().set_action(node.url, action_slot=keyword, model="ir.actions.act_url", action=value, res_id=False) def process_ir_set(self, node): if not self.mode == 'init': @@ -824,9 +823,15 @@ class YamlInterpreter(object): else: value = expression res[fieldname] = value - self.pool['ir.model.data'].ir_set(self.cr, SUPERUSER_ID, res['key'], res['key2'], \ - res['name'], res['models'], res['value'], replace=res.get('replace',True), \ - isobject=res.get('isobject', False), meta=res.get('meta',None)) + ir_values = self.env['ir.values'] + for model in res['models']: + res_id = False + if isinstance(model, (list, tuple)): + model, res_id = model + if res['key'] == 'default': + ir_values.sudo().set_default(model, field_name=res['name'], value=res['value'], condition=res['key2']) + elif res['key'] == 'action': + ir_values.sudo().set_action(res['name'], action_slot=res['key2'], model=model, action=res['value'], res_id=res_id) def process_report(self, node): values = {} @@ -860,9 +865,12 @@ class YamlInterpreter(object): if not node.menu or eval(node.menu): keyword = node.keyword or 'client_print_multi' value = 'ir.actions.report.xml,%s' % id - replace = node.replace or True - self.pool['ir.model.data'].ir_set(self.cr, SUPERUSER_ID, 'action', \ - keyword, values['name'], [values['model']], value, replace=replace, isobject=True, xml_id=xml_id) + ir_values = self.env['ir.values'] + res_id = False + model = values['model'] + if isinstance(model, (list, tuple)): + model, res_id = model + ir_values.sudo().set_action(values['name'], action_slot=keyword, model=model, action=value, res_id=res_id) def process_none(self): """