[Erp5-report] r42720 nicolas.dumazet - /erp5/trunk/products/ERP5/InteractionWorkflow.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Fri Jan 28 08:06:29 CET 2011
Author: nicolas.dumazet
Date: Fri Jan 28 08:06:29 2011
New Revision: 42720
URL: http://svn.erp5.org?rev=42720&view=rev
Log:
As far as I can tell, we only ever user trigger_workflows
If this is not the case, we should adapt code registrating methods
to skip non-triggers instead of checking invalid transitions all the
time. Hence the assert.
Modified:
erp5/trunk/products/ERP5/InteractionWorkflow.py
Modified: erp5/trunk/products/ERP5/InteractionWorkflow.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5/InteractionWorkflow.py?rev=42720&r1=42719&r2=42720&view=diff
==============================================================================
--- erp5/trunk/products/ERP5/InteractionWorkflow.py [utf8] (original)
+++ erp5/trunk/products/ERP5/InteractionWorkflow.py [utf8] Fri Jan 28 08:06:29 2011
@@ -226,19 +226,19 @@ class InteractionWorkflowDefinition (DCW
for t_id in transition_list:
tdef = self.interactions[t_id]
- if tdef.trigger_type == TRIGGER_WORKFLOW_METHOD:
- if (tdef.portal_type_filter is None or \
- ob.getPortalType() in tdef.portal_type_filter) and \
- self._checkTransitionGuard(tdef, ob, **kw):
- filtered_transition_list.append(tdef.id)
- former_status = self._getStatusOf(ob)
- # Execute the "before" script.
- for script_name in tdef.script_name:
- script = self.scripts[script_name]
- # Pass lots of info to the script in a single parameter.
- sci = StateChangeInfo(
- ob, self, former_status, tdef, None, None, kwargs=kw)
- script(sci) # May throw an exception
+ assert tdef.trigger_type == TRIGGER_WORKFLOW_METHOD
+ if (tdef.portal_type_filter is None or \
+ ob.getPortalType() in tdef.portal_type_filter) and \
+ self._checkTransitionGuard(tdef, ob, **kw):
+ filtered_transition_list.append(tdef.id)
+ former_status = self._getStatusOf(ob)
+ # Execute the "before" script.
+ for script_name in tdef.script_name:
+ script = self.scripts[script_name]
+ # Pass lots of info to the script in a single parameter.
+ sci = StateChangeInfo(
+ ob, self, former_status, tdef, None, None, kwargs=kw)
+ script(sci) # May throw an exception
return filtered_transition_list
@@ -256,62 +256,62 @@ class InteractionWorkflowDefinition (DCW
for t_id in transition_list:
tdef = self.interactions[t_id]
- if tdef.trigger_type == TRIGGER_WORKFLOW_METHOD:
- if (tdef.portal_type_filter is None or \
- ob.getPortalType() in tdef.portal_type_filter):
- # Initialize variables
- former_status = self._getStatusOf(ob)
- econtext = None
- sci = None
-
- # Update variables.
- tdef_exprs = tdef.var_exprs
- if tdef_exprs is None: tdef_exprs = {}
- status = {}
- for id, vdef in self.variables.items():
- if not vdef.for_status:
- continue
- expr = None
- if tdef_exprs.has_key(id):
- expr = tdef_exprs[id]
- elif not vdef.update_always and former_status.has_key(id):
- # Preserve former value
- value = former_status[id]
+ assert tdef.trigger_type == TRIGGER_WORKFLOW_METHOD
+ if (tdef.portal_type_filter is None or \
+ ob.getPortalType() in tdef.portal_type_filter):
+ # Initialize variables
+ former_status = self._getStatusOf(ob)
+ econtext = None
+ sci = None
+
+ # Update variables.
+ tdef_exprs = tdef.var_exprs
+ if tdef_exprs is None: tdef_exprs = {}
+ status = {}
+ for id, vdef in self.variables.items():
+ if not vdef.for_status:
+ continue
+ expr = None
+ if tdef_exprs.has_key(id):
+ expr = tdef_exprs[id]
+ elif not vdef.update_always and former_status.has_key(id):
+ # Preserve former value
+ value = former_status[id]
+ else:
+ if vdef.default_expr is not None:
+ expr = vdef.default_expr
else:
- if vdef.default_expr is not None:
- expr = vdef.default_expr
- else:
- value = vdef.default_value
- if expr is not None:
- # Evaluate an expression.
- if econtext is None:
- # Lazily create the expression context.
- if sci is None:
- sci = StateChangeInfo(
- ob, self, former_status, tdef,
- None, None, None)
- econtext = createExprContext(sci)
- value = expr(econtext)
- status[id] = value
-
- sci = StateChangeInfo(
- ob, self, former_status, tdef, None, None, kwargs=kw)
- # Execute the "after" script.
- for script_name in tdef.after_script_name:
- script = self.scripts[script_name]
- # Pass lots of info to the script in a single parameter.
- script(sci) # May throw an exception
-
- # Execute Before Commit
- for script_name in tdef.before_commit_script_name:
- transaction.get().addBeforeCommitHook(self._before_commit,
- (sci, script_name))
-
- # Execute "activity" scripts
- for script_name in tdef.activate_script_name:
- self.activate(activity='SQLQueue')\
- .activeScript(script_name, ob.getRelativeUrl(),
- status, tdef.id)
+ value = vdef.default_value
+ if expr is not None:
+ # Evaluate an expression.
+ if econtext is None:
+ # Lazily create the expression context.
+ if sci is None:
+ sci = StateChangeInfo(
+ ob, self, former_status, tdef,
+ None, None, None)
+ econtext = createExprContext(sci)
+ value = expr(econtext)
+ status[id] = value
+
+ sci = StateChangeInfo(
+ ob, self, former_status, tdef, None, None, kwargs=kw)
+ # Execute the "after" script.
+ for script_name in tdef.after_script_name:
+ script = self.scripts[script_name]
+ # Pass lots of info to the script in a single parameter.
+ script(sci) # May throw an exception
+
+ # Execute Before Commit
+ for script_name in tdef.before_commit_script_name:
+ transaction.get().addBeforeCommitHook(self._before_commit,
+ (sci, script_name))
+
+ # Execute "activity" scripts
+ for script_name in tdef.activate_script_name:
+ self.activate(activity='SQLQueue')\
+ .activeScript(script_name, ob.getRelativeUrl(),
+ status, tdef.id)
def _before_commit(self, sci, script_name):
# check the object still exists before calling the script
More information about the Erp5-report
mailing list