[Erp5-report] r6499 - /erp5/trunk/products/ERP5Type/patches/DCWorkflow.py
nobody at svn.erp5.org
nobody at svn.erp5.org
Sat Apr 8 15:55:11 CEST 2006
Author: jerome
Date: Sat Apr 8 15:55:08 2006
New Revision: 6499
URL: http://svn.erp5.org?rev=6499&view=rev
Log:
Add Workflow Factory for ERP5-style workflow with all workflow variables for Base_viewHistory
Modified:
erp5/trunk/products/ERP5Type/patches/DCWorkflow.py
Modified: erp5/trunk/products/ERP5Type/patches/DCWorkflow.py
URL: http://svn.erp5.org/erp5/trunk/products/ERP5Type/patches/DCWorkflow.py?rev=6499&r1=6498&r2=6499&view=diff
==============================================================================
--- erp5/trunk/products/ERP5Type/patches/DCWorkflow.py (original)
+++ erp5/trunk/products/ERP5Type/patches/DCWorkflow.py Sat Apr 8 15:55:08 2006
@@ -167,7 +167,7 @@
if tdef is not None: tdef_exprs = tdef.var_exprs
if tdef_exprs is None: tdef_exprs = {}
status = {}
- for id, vdef in self.variables.items():
+ for id, vdef in self.variables.items():
if not vdef.for_status:
continue
expr = None
@@ -309,7 +309,72 @@
def getAvailableScriptIds(self):
return self.getWorkflow().scripts.keys() + \
- [k for k in self.getWorkflow().transitions.keys() if \
- self.getWorkflow().transitions[k].trigger_type == TRIGGER_WORKFLOW_METHOD]
+ [k for k in self.getWorkflow().transitions.keys() if \
+ self.getWorkflow().transitions[k].trigger_type == TRIGGER_WORKFLOW_METHOD]
TransitionDefinition.getAvailableScriptIds = getAvailableScriptIds
+
+# Add a workflow factory for ERP5 style workflow, because some variables
+# are needed for History tab.
+from Products.CMFCore.WorkflowTool import addWorkflowFactory
+from Products.ERP5Type import Permissions
+
+def setupERP5Workflow(wf):
+ """Sets up an DC Workflow with defaults variables needed by ERP5.
+ """
+ wf.setProperties(title='ERP5 default workflow')
+ for s in ('draft',):
+ wf.states.addState(s)
+ for v in ('action', 'actor', 'comment', 'history', 'time',
+ 'error_message'):
+ wf.variables.addVariable(v)
+ for perm in (Permissions.AccessContentsInformation,
+ Permissions.View,
+ Permissions.ModifyPortalContent ):
+ wf.addManagedPermission(perm)
+
+ wf.states.setInitialState('draft')
+ # set by default the state variable to simulation_state.
+ # anyway, a default workflow needs to be configured.
+ wf.variables.setStateVar('simulation_state')
+
+ vdef = wf.variables['action']
+ vdef.setProperties(description='The last transition',
+ default_expr='transition/getId|nothing',
+ for_status=1, update_always=1)
+
+ vdef = wf.variables['actor']
+ vdef.setProperties(description='The name of the user who performed '
+ 'the last transition',
+ default_expr='user/getUserName',
+ for_status=1, update_always=1)
+
+ vdef = wf.variables['comment']
+ vdef.setProperties(description='Comments about the last transition',
+ default_expr="python:state_change.kwargs.get('comment', '')",
+ for_status=1, update_always=1)
+
+ vdef = wf.variables['history']
+ vdef.setProperties(description='Provides access to workflow history',
+ default_expr="state_change/getHistory")
+
+ vdef = wf.variables['time']
+ vdef.setProperties(description='Time of the last transition',
+ default_expr="state_change/getDateTime",
+ for_status=1, update_always=1)
+
+ vdef = wf.variables['error_message']
+ vdef.setProperties(description='Error message if validation failed',
+ for_status=1, update_always=1)
+
+def createERP5Workflow(id):
+ """Creates an ERP5 Workflow """
+ ob = DCWorkflowDefinition(id)
+ setupERP5Workflow(ob)
+ return ob
+
+addWorkflowFactory(createERP5Workflow,
+ id='erp5_workflow',
+ title='ERP5-style empty workflow')
+
+
More information about the Erp5-report
mailing list