[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
This commit is contained in:
Goffin Simon
2016-07-19 09:35:41 +02:00
parent 523209379a
commit 7111ec0b7b
4 changed files with 40 additions and 46 deletions
+5 -18
View File
@@ -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):
-13
View File
@@ -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
+14 -2
View File
@@ -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':
+21 -13
View File
@@ -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):
"""