diff --git a/openerp/addons/base/res/res_security.xml b/openerp/addons/base/res/res_security.xml
index c7d2a77f846..acec903c1a3 100644
--- a/openerp/addons/base/res/res_security.xml
+++ b/openerp/addons/base/res/res_security.xml
@@ -12,9 +12,6 @@
-
diff --git a/openerp/osv/orm.py b/openerp/osv/orm.py
index 48689c3c26e..3eafd247f59 100644
--- a/openerp/osv/orm.py
+++ b/openerp/osv/orm.py
@@ -3792,6 +3792,12 @@ class BaseModel(object):
for res_id in ids:
getattr(wf_service, trigger)(uid, self._name, res_id, cr)
+ def _workflow_signal(self, cr, uid, ids, signal, context=None):
+ """Send given workflow signal"""
+ wf_service = netsvc.LocalService("workflow")
+ for res_id in ids:
+ wf_service.trg_validate(uid, self._name, res_id, signal, cr)
+
def unlink(self, cr, uid, ids, context=None):
"""
Delete records with given ids
diff --git a/openerp/osv/osv.py b/openerp/osv/osv.py
index f8d51ce0fa8..d59998193a2 100644
--- a/openerp/osv/osv.py
+++ b/openerp/osv/osv.py
@@ -185,16 +185,18 @@ class object_proxy(object):
cr.close()
return res
- def exec_workflow_cr(self, cr, uid, obj, method, *args):
- wf_service = netsvc.LocalService("workflow")
- return wf_service.trg_validate(uid, obj, args[0], method, cr)
+ def exec_workflow_cr(self, cr, uid, obj, signal, *args):
+ object = pooler.get_pool(cr.dbname).get(obj)
+ if not object:
+ raise except_osv('Object Error', 'Object %s doesn\'t exist' % str(obj))
+ return object._workflow_signal(cr, uid, [args[0]], signal)
@check
- def exec_workflow(self, db, uid, obj, method, *args):
+ def exec_workflow(self, db, uid, obj, signal, *args):
cr = pooler.get_db(db).cursor()
try:
try:
- res = self.exec_workflow_cr(cr, uid, obj, method, *args)
+ res = self.exec_workflow_cr(cr, uid, obj, signal, *args)
cr.commit()
except Exception:
cr.rollback()