diff --git a/product/ERP5/InteractionWorkflow.py b/product/ERP5/InteractionWorkflow.py index 1413950742cf04754c056b960819650119eaffbd..392ec040b0fbbb3d9151b3b18ca0043cc813a92f 100644 --- a/product/ERP5/InteractionWorkflow.py +++ b/product/ERP5/InteractionWorkflow.py @@ -303,8 +303,9 @@ class InteractionWorkflowDefinition (DCWorkflowDefinition, ActiveObject): # Execute Before Commit for script_name in tdef.before_commit_script_name: - script = self.scripts[script_name] - transaction.get().addBeforeCommitHook(script, (sci,)) + del sci.object + transaction.get().addBeforeCommitHook(self._before_commit, + (sci, ob.getPhysicalPath(), script_name)) # Execute "activity" scripts for script_name in tdef.activate_script_name: @@ -312,6 +313,13 @@ class InteractionWorkflowDefinition (DCWorkflowDefinition, ActiveObject): .activeScript(script_name, ob.getRelativeUrl(), status, tdef.id) + def _before_commit(self, sci, path, script_name): + try: + sci.object = self.unrestrictedTraverse(path) + except KeyError: + return + self.scripts[script_name](sci) + security.declarePrivate('activeScript') def activeScript(self, script_name, ob_url, status, tdef_id): script = self.scripts[script_name]