Commit 24cda5ab authored by wenjie.zheng's avatar wenjie.zheng

Workflow.py: check script before execute script.

parent 6e611fb7
...@@ -615,13 +615,15 @@ class Workflow(IdAsReferenceMixin("", "prefix"), XMLObject): ...@@ -615,13 +615,15 @@ class Workflow(IdAsReferenceMixin("", "prefix"), XMLObject):
before_script_success = 1 before_script_success = 1
if tdef is not None and tdef.getBeforeScriptId(): if tdef is not None and tdef.getBeforeScriptId():
script_id = tdef.getBeforeScriptId() script_id = tdef.getBeforeScriptId()
if script_id:
script = self._getOb(script_id, None) script = self._getOb(script_id, None)
if script:
# Pass lots of info to the script in a single parameter. # Pass lots of info to the script in a single parameter.
if script.getTypeInfo().getId() == 'Workflow Script': if script.getTypeInfo().getId() == 'Workflow Script':
kwargs = form_kw kwargs = form_kw
sci = StateChangeInfo( sci = StateChangeInfo(
document, self, former_status, tdef, old_sdef, new_sdef, kwargs) document, self, former_status, tdef, old_sdef, new_sdef, kwargs)
else:
raise NotImplementedError ('Unsupported Script %s for state %s'%(script_id, old_sdef.getReference()))
try: try:
script(sci) # May throw an exception. script(sci) # May throw an exception.
except ValidationFailed, validation_exc: except ValidationFailed, validation_exc:
...@@ -710,14 +712,14 @@ class Workflow(IdAsReferenceMixin("", "prefix"), XMLObject): ...@@ -710,14 +712,14 @@ class Workflow(IdAsReferenceMixin("", "prefix"), XMLObject):
# Execute the "after" script. # Execute the "after" script.
if tdef is not None: if tdef is not None:
script_id = getattr(tdef, 'getAfterScriptId')() script_id = getattr(tdef, 'getAfterScriptId')()
if script_id is not None: script = self._getOb(script_id, None)
if script:
kwargs = form_kw kwargs = form_kw
# Script can be either script or workflow method # Script can be either script or workflow method
if script_id in old_sdef.getDestinationIdList() and \ if script_id in old_sdef.getDestinationIdList() and \
self._getOb(script_id).trigger_type == TRIGGER_WORKFLOW_METHOD: self._getOb(script_id).trigger_type == TRIGGER_WORKFLOW_METHOD:
getattr(document, convertToMixedCase(self._getOb(script_id).getReference()))() getattr(document, convertToMixedCase(self._getOb(script_id).getReference()))()
else: else:
script = self._getOb(script_id)
# Pass lots of info to the script in a single parameter. # Pass lots of info to the script in a single parameter.
if script.getTypeInfo().getId() == 'Workflow Script': if script.getTypeInfo().getId() == 'Workflow Script':
sci = StateChangeInfo( sci = StateChangeInfo(
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment