[IMP] new-api-ify 'trigger' server action

This commit is contained in:
Xavier Morel 2014-10-08 13:09:13 +02:00
parent 8cfe731f76
commit 99d740ad7d
1 changed files with 8 additions and 14 deletions

View File

@ -31,6 +31,7 @@ import openerp
from openerp import SUPERUSER_ID
from openerp import tools
from openerp import workflow
import openerp.api
from openerp.osv import fields, osv
from openerp.osv.orm import browse_record
import openerp.report.interface
@ -860,21 +861,14 @@ class ir_actions_server(osv.osv):
- `relational`: find the related model and object, using the relational
field, then target_model_pool.signal_workflow(cr, uid, target_id, <TRIGGER_NAME>)
"""
obj_pool = self.pool[action.model_id.model]
if action.use_relational_model == 'base':
target_id = context.get('active_id')
target_pool = obj_pool
else:
value = getattr(obj_pool.browse(cr, uid, context.get('active_id'), context=context), action.wkf_field_id.name)
if action.wkf_field_id.ttype == 'many2one':
target_id = value.id
else:
target_id = value
target_pool = self.pool[action.wkf_model_id.model]
# weird signature and calling -> no self.env, use action param's
record = action.env[action.model_id.model].browse(context['active_id'])
if action.use_relational_model == 'relational':
record = getattr(record, action.wkf_field_id.name)
if not isinstance(record, openerp.models.BaseModel):
record = action.env[action.wkf_model_id.model].browse(record)
trigger_name = action.wkf_transition_id.signal
workflow.trg_validate(uid, target_pool._name, target_id, trigger_name, cr)
record.signal_workflow(action.wkf_transition_id.signal)
def run_action_multi(self, cr, uid, action, eval_context=None, context=None):
res = False