"""
res = {}
for exp in action.fields_lines:
- if exp.type == 'equation':
- expr = eval(exp.value, eval_context)
- else:
- expr = exp.value
- res[exp.col1.name] = expr
+ res[exp.col1.name] = exp.eval_value(eval_context=eval_context)[exp.id]
if action.use_write == 'current':
model = action.model_id.model
"""
res = {}
for exp in action.fields_lines:
- if exp.type == 'equation':
- expr = eval(exp.value, eval_context)
- else:
- expr = exp.value
- res[exp.col1.name] = expr
+ res[exp.col1.name] = exp.eval_value(eval_context=eval_context)[exp.id]
if action.use_create in ['new', 'copy_current']:
model = action.model_id.model
class ir_server_object_lines(osv.osv):
_name = 'ir.server.object.lines'
+ _description = 'Server Action value mapping'
_sequence = 'ir_actions_id_seq'
+
_columns = {
'server_id': fields.many2one('ir.actions.server', 'Related Server Action'),
'col1': fields.many2one('ir.model.fields', 'Field', required=True),
('equation', 'Python expression')
], 'Evaluation Type', required=True, change_default=True),
}
+
_defaults = {
'type': 'value',
}
+ def eval_value(self, cr, uid, ids, eval_context=None, context=None):
+ res = dict.fromkeys(ids, False)
+ for line in self.browse(cr, uid, ids, context=context):
+ expr = line.value
+ if line.type == 'equation':
+ expr = eval(line.value, eval_context)
+ elif line.col1.ttype in ['many2one', 'integer']:
+ try:
+ expr = int(line.value)
+ except Exception:
+ pass
+ res[line.id] = expr
+ return res
+
TODO_STATES = [('open', 'To Do'),
('done', 'Done')]