[Checkins] SVN: CMF_Extras/trunk/CMFCollector/ Moved the workflow
configuration and installation to the Install method,
and removed now unnecessary .zexp
Leonardo Rochael Almeida
leo at hiper.com.br
Thu Aug 24 22:09:06 EDT 2006
Log message for revision 69777:
Moved the workflow configuration and installation to the Install method, and removed now unnecessary .zexp
Changed:
U CMF_Extras/trunk/CMFCollector/Collector.py
U CMF_Extras/trunk/CMFCollector/Extensions/Install.py
U CMF_Extras/trunk/CMFCollector/INSTALL.txt
U CMF_Extras/trunk/CMFCollector/__init__.py
D CMF_Extras/trunk/CMFCollector/collector_issue_workflow.zexp
A CMF_Extras/trunk/CMFCollector/workflow.py
-=-
Modified: CMF_Extras/trunk/CMFCollector/Collector.py
===================================================================
--- CMF_Extras/trunk/CMFCollector/Collector.py 2006-08-24 21:52:31 UTC (rev 69776)
+++ CMF_Extras/trunk/CMFCollector/Collector.py 2006-08-25 02:09:05 UTC (rev 69777)
@@ -511,6 +511,11 @@
('assigned_to', 'KeywordIndex'),
('upload_number', 'KeywordIndex')
)
+ if len(standard[0]) == 3:
+ # compatibility with recent CMFCore.CatalogTool
+ # XXX we should probably invert this test and BBB the 2-tuple result
+ custom = tuple([index_tuple + (None,)
+ for index_tuple in custom])
return standard + custom
def enumerateColumns( self ):
Modified: CMF_Extras/trunk/CMFCollector/Extensions/Install.py
===================================================================
--- CMF_Extras/trunk/CMFCollector/Extensions/Install.py 2006-08-24 21:52:31 UTC (rev 69776)
+++ CMF_Extras/trunk/CMFCollector/Extensions/Install.py 2006-08-25 02:09:05 UTC (rev 69777)
@@ -42,8 +42,17 @@
types_tool = getToolByName(self, 'portal_types')
skins_tool = getToolByName(self, 'portal_skins')
metadata_tool = getToolByName(self, 'portal_metadata')
+ workflow_tool = getToolByName(self, 'portal_workflow')
catalog = getToolByName(self, 'portal_catalog')
+ # Setup the workflow if it doesn't already exist
+ if 'collector_issue_workflow' not in workflow_tool.objectIds():
+ print >> out, 'Adding workflow.'
+ workflow_tool.manage_addWorkflow(id='collector_issue_workflow',
+ workflow_type='collector_issue_workflow (Collector issue workflow)')
+ out.write('Registered collector_issue_workflow in workflow tool\n')
+
+
# Borrowed from CMFDefault.Portal.PortalGenerator.setupTypes()
# We loop through anything defined in the factory type information
# and configure it in the types tool if it doesn't already exist
@@ -52,6 +61,14 @@
cfm = apply(ContentFactoryMetadata, (), t)
types_tool._setObject(t['id'], cfm)
out.write('Registered %s with the types tool\n' % t['id'])
+
+ if t['id'] == 'Collector Issue':
+ # assign the collector issue workflow to the collector
+ # issue
+ workflow_tool.setChainForPortalTypes(['Collector Issue'],
+ ['collector_issue_workflow'])
+ out.write('set collector_issue_workflow as the '
+ 'default workflow for "Collector Issue"\n')
else:
out.write('Skipping "%s" - already in types tool\n' % t['id'])
Modified: CMF_Extras/trunk/CMFCollector/INSTALL.txt
===================================================================
--- CMF_Extras/trunk/CMFCollector/INSTALL.txt 2006-08-24 21:52:31 UTC (rev 69776)
+++ CMF_Extras/trunk/CMFCollector/INSTALL.txt 2006-08-25 02:09:05 UTC (rev 69777)
@@ -29,7 +29,10 @@
ln -s /path/to/installation /path/to/zope/Products
- - In the root of your CMFSite installation (within the ZMI), add an
+ - If you have a portal_quickinstaller, you can use it to install
+ CMFCollector
+
+ - Otherwise, in the root of your CMFSite installation (within the ZMI), add an
external method to the root of the CMF Site, with the following
configuration values:
@@ -48,27 +51,6 @@
steps it took to register and install CMF Collector into the CMF
Site instance.
- - Install the workflow:
-
- 1. Put collector_issue_workflow.zexp in your site's import/
- directory.
-
- 2. Within the portal's portal_workflow 'Contents' tab:
-
- o hit the 'Import/Export' button
-
- o fill in Import File Name: collector_issue_workflow.zexp
-
- o hit 'import'
-
- 3. Within the portal_workflow 'Workflows' tab, fill in:
-
- Collector Issue: collector_issue_workflow
-
- ... and hit the "Change" button.
-
- Then the workflow will be associated with any new issues you create.
-
- Add a Collector to your site:
Go to your site's interface, and add a Collector as you would any
Modified: CMF_Extras/trunk/CMFCollector/__init__.py
===================================================================
--- CMF_Extras/trunk/CMFCollector/__init__.py 2006-08-24 21:52:31 UTC (rev 69776)
+++ CMF_Extras/trunk/CMFCollector/__init__.py 2006-08-25 02:09:05 UTC (rev 69777)
@@ -26,6 +26,10 @@
from permissions import EditCollectorIssue
from permissions import AddCollectorIssueFollowup
+# register workflow factory
+import workflow
+del workflow
+
this_module = sys.modules[ __name__ ]
factory_type_information = (
Deleted: CMF_Extras/trunk/CMFCollector/collector_issue_workflow.zexp
===================================================================
(Binary files differ)
Added: CMF_Extras/trunk/CMFCollector/workflow.py
===================================================================
--- CMF_Extras/trunk/CMFCollector/workflow.py 2006-08-24 21:52:31 UTC (rev 69776)
+++ CMF_Extras/trunk/CMFCollector/workflow.py 2006-08-25 02:09:05 UTC (rev 69777)
@@ -0,0 +1,490 @@
+from Products.CMFCore.WorkflowTool import addWorkflowFactory
+
+from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition
+
+def setupCollector_issue_workflow(wf):
+ "..."
+ wf.setProperties(title='Collector issue workflow')
+
+ for s in ['Resolved', 'Deferred', 'Pending_confidential', 'Testing', 'Rejected', 'Accepted_confidential', 'Testing_confidential', 'New', 'Wontfix', 'Accepted', 'Pending']:
+ wf.states.addState(s)
+ for t in ['defer', 'reject-test_confidential', 'staffed_confidential', 'restrict_pending', 'wontfix', 'test_confidential', 'staffed', 'new_issue', 'unrestrict_accepted', 'resubmit', 'reject', 'test', 'new_issue_confidential', 'resign', 'restrict_accepted', 'accept', 'abandoned_confidential', 'abandoned', 'resolve', 'reject-test', 'unrestrict_pending', 'request', 'assign', 'accept_confidential', 'assign_confidential']:
+ wf.transitions.addTransition(t)
+ for v in ['requested', 'confidential', 'assigned_to']:
+ wf.variables.addVariable(v)
+ for l in []:
+ wf.worklists.addWorklist(l)
+ for p in ('Access contents information', 'View', 'Edit collector issue', 'Add collector issue artifact', 'Support collector issue'):
+ wf.addManagedPermission(p)
+
+
+ ## Initial State
+ wf.states.setInitialState('New')
+
+ ## States initialization
+ sdef = wf.states['Resolved']
+ sdef.setProperties(title="""""",
+ transitions=('accept', 'assign', 'reject', 'resign', 'resubmit'))
+ sdef.setPermission('Access contents information', 1, ['Anonymous'])
+ sdef.setPermission('View', 1, ['Anonymous'])
+ sdef.setPermission('Edit collector issue', 0, ['Manager', 'Reviewer'])
+ sdef.setPermission('Add collector issue artifact', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('Support collector issue', 0, ['Manager', 'Reviewer'])
+
+ sdef = wf.states['Deferred']
+ sdef.setProperties(title="""""",
+ transitions=('accept', 'accept_confidential', 'assign', 'assign_confidential', 'reject', 'resolve', 'resubmit', 'wontfix'))
+ sdef.setPermission('Access contents information', 1, ['Anonymous'])
+ sdef.setPermission('View', 1, ['Anonymous'])
+ sdef.setPermission('Edit collector issue', 0, ['Manager', 'Reviewer'])
+ sdef.setPermission('Add collector issue artifact', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('Support collector issue', 0, ['Manager', 'Reviewer'])
+
+ sdef = wf.states['Pending_confidential']
+ sdef.setProperties(title="""""",
+ transitions=('accept_confidential', 'assign_confidential', 'reject', 'request', 'resolve', 'staffed_confidential', 'test_confidential', 'unrestrict_pending', 'wontfix'))
+ sdef.setPermission('Access contents information', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('View', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('Edit collector issue', 0, ['Manager', 'Reviewer'])
+ sdef.setPermission('Add collector issue artifact', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('Support collector issue', 0, ['Manager', 'Reviewer'])
+
+ sdef = wf.states['Testing']
+ sdef.setProperties(title="""""",
+ transitions=('assign', 'reject-test', 'resolve'))
+ sdef.setPermission('Access contents information', 1, [])
+ sdef.setPermission('View', 1, [])
+ sdef.setPermission('Edit collector issue', 1, [])
+ sdef.setPermission('Add collector issue artifact', 1, [])
+ sdef.setPermission('Support collector issue', 1, [])
+
+ sdef = wf.states['Rejected']
+ sdef.setProperties(title="""""",
+ transitions=('accept', 'accept_confidential', 'assign', 'defer', 'resolve', 'resubmit', 'wontfix'))
+ sdef.setPermission('Access contents information', 1, ['Anonymous'])
+ sdef.setPermission('View', 1, ['Anonymous'])
+ sdef.setPermission('Edit collector issue', 0, ['Manager', 'Reviewer'])
+ sdef.setPermission('Add collector issue artifact', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('Support collector issue', 0, ['Manager', 'Reviewer'])
+
+ sdef = wf.states['Accepted_confidential']
+ sdef.setProperties(title="""""",
+ transitions=('abandoned_confidential', 'accept_confidential', 'assign_confidential', 'reject', 'resign', 'resolve', 'test_confidential', 'unrestrict_accepted', 'wontfix'))
+ sdef.setPermission('Access contents information', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('View', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('Edit collector issue', 0, ['Manager', 'Reviewer'])
+ sdef.setPermission('Add collector issue artifact', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('Support collector issue', 0, ['Manager', 'Reviewer'])
+
+ sdef = wf.states['Testing_confidential']
+ sdef.setProperties(title="""""",
+ transitions=('assign_confidential', 'reject-test_confidential', 'resolve'))
+ sdef.setPermission('Access contents information', 1, [])
+ sdef.setPermission('View', 1, [])
+ sdef.setPermission('Edit collector issue', 1, [])
+ sdef.setPermission('Add collector issue artifact', 1, [])
+ sdef.setPermission('Support collector issue', 1, [])
+
+ sdef = wf.states['New']
+ sdef.setProperties(title="""""",
+ transitions=('new_issue', 'new_issue_confidential', 'request'))
+ sdef.setPermission('Access contents information', 1, [])
+ sdef.setPermission('View', 1, [])
+ sdef.setPermission('Edit collector issue', 1, [])
+ sdef.setPermission('Add collector issue artifact', 1, [])
+ sdef.setPermission('Support collector issue', 1, [])
+
+ sdef = wf.states['Wontfix']
+ sdef.setProperties(title="""""",
+ transitions=('accept', 'accept_confidential', 'assign', 'defer', 'resolve', 'resubmit'))
+ sdef.setPermission('Access contents information', 1, [])
+ sdef.setPermission('View', 1, [])
+ sdef.setPermission('Edit collector issue', 1, [])
+ sdef.setPermission('Add collector issue artifact', 1, [])
+ sdef.setPermission('Support collector issue', 1, [])
+
+ sdef = wf.states['Accepted']
+ sdef.setProperties(title="""""",
+ transitions=('abandoned', 'accept', 'assign', 'defer', 'reject', 'resign', 'resolve', 'restrict_accepted', 'test', 'wontfix'))
+ sdef.setPermission('Access contents information', 1, ['Anonymous'])
+ sdef.setPermission('View', 1, ['Anonymous'])
+ sdef.setPermission('Edit collector issue', 0, ['Manager', 'Reviewer'])
+ sdef.setPermission('Add collector issue artifact', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('Support collector issue', 0, ['Manager', 'Reviewer'])
+
+ sdef = wf.states['Pending']
+ sdef.setProperties(title="""""",
+ transitions=('accept', 'assign', 'defer', 'reject', 'request', 'resolve', 'restrict_pending', 'staffed', 'test', 'wontfix'))
+ sdef.setPermission('Access contents information', 1, ['Anonymous'])
+ sdef.setPermission('View', 1, ['Anonymous'])
+ sdef.setPermission('Edit collector issue', 0, ['Manager', 'Reviewer'])
+ sdef.setPermission('Add collector issue artifact', 0, ['Manager', 'Owner', 'Reviewer'])
+ sdef.setPermission('Support collector issue', 0, ['Manager', 'Reviewer'])
+
+
+ ## Transitions initialization
+ tdef = wf.transitions['defer']
+ tdef.setProperties(title="""""",
+ new_state_id="""Deferred""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""defer""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': 'not: status/confidential', 'guard_permissions': 'Support collector issue'},
+ )
+
+ tdef = wf.transitions['reject-test_confidential']
+ tdef.setProperties(title="""""",
+ new_state_id="""Accepted_confidential""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""""",
+ actbox_name="""reject-test_confidential""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='assigned_to', text="python: tuple(state_change.kwargs['assignees'])")
+
+ tdef = wf.transitions['staffed_confidential']
+ tdef.setProperties(title="""(Pending) issue with staff becomes (accepted)""",
+ new_state_id="""Accepted_confidential""",
+ trigger_type=0,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""""",
+ actbox_url="""""",
+ actbox_category="""workflow""",
+ props={'guard_expr': "python: status['confidential'] and status['assigned_to']"},
+ )
+
+ tdef = wf.transitions['restrict_pending']
+ tdef.setProperties(title="""Make confidential""",
+ new_state_id="""Pending_confidential""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""restrict_pending""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='confidential', text='python: 1')
+
+ tdef = wf.transitions['wontfix']
+ tdef.setProperties(title="""Assert that the issue won't be fixed""",
+ new_state_id="""Wontfix""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""""",
+ actbox_name="""wontfix""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='confidential', text='python: 0')
+
+ tdef = wf.transitions['test_confidential']
+ tdef.setProperties(title="""Assign to client for testing""",
+ new_state_id="""Testing_confidential""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""""",
+ actbox_name="""test_confidential""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='assigned_to', text="python: tuple(state_change.kwargs['assignees'])")
+
+ tdef = wf.transitions['staffed']
+ tdef.setProperties(title="""Pending issue with staff becomes accepted""",
+ new_state_id="""Accepted""",
+ trigger_type=0,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': "python: not status['confidential'] and status['assigned_to']"},
+ )
+
+ tdef = wf.transitions['new_issue']
+ tdef.setProperties(title="""Situate new non-security-related issues""",
+ new_state_id="""Pending""",
+ trigger_type=0,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': 'not: here/security_related'},
+ )
+ tdef.addVariable(id='requested', text='python: 0')
+ tdef.addVariable(id='confidential', text='python: 0')
+
+ tdef = wf.transitions['unrestrict_accepted']
+ tdef.setProperties(title="""""",
+ new_state_id="""Accepted""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""unrestrict_accepted""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='confidential', text='python: 0')
+
+ tdef = wf.transitions['resubmit']
+ tdef.setProperties(title="""""",
+ new_state_id="""New""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""resubmit""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+
+ tdef = wf.transitions['reject']
+ tdef.setProperties(title="""""",
+ new_state_id="""Rejected""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""reject""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='confidential', text='python: 0')
+
+ tdef = wf.transitions['test']
+ tdef.setProperties(title="""""",
+ new_state_id="""Testing""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""""",
+ actbox_name="""test""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='assigned_to', text="python: tuple(state_change.kwargs['assignees'])")
+
+ tdef = wf.transitions['new_issue_confidential']
+ tdef.setProperties(title="""Situate new security-related issues""",
+ new_state_id="""Pending_confidential""",
+ trigger_type=0,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': 'here/security_related'},
+ )
+ tdef.addVariable(id='requested', text='python: 0')
+ tdef.addVariable(id='confidential', text='python: 1')
+
+ tdef = wf.transitions['resign']
+ tdef.setProperties(title="""""",
+ new_state_id="""""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""resign""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': 'here/is_assigned', 'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='assigned_to', text="python: tuple([ assignee for assignee in here.assigned_to() if assignee != state_change.kwargs['username'] ])")
+
+ tdef = wf.transitions['restrict_accepted']
+ tdef.setProperties(title="""Make confidential""",
+ new_state_id="""Accepted_confidential""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""restrict_accepted""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='confidential', text='python: 1')
+
+ tdef = wf.transitions['accept']
+ tdef.setProperties(title="""""",
+ new_state_id="""Accepted""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""accept""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': "python: not status['confidential'] and not here.is_assigned()", 'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='assigned_to', text="python: here.assigned_to() + (state_change.kwargs['username'],)")
+
+ tdef = wf.transitions['abandoned_confidential']
+ tdef.setProperties(title="""Revert to (pending) if no supporters""",
+ new_state_id="""Pending_confidential""",
+ trigger_type=0,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': "python: status['confidential'] and not here.assigned_to()", 'guard_permissions': 'Support collector issue'},
+ )
+
+ tdef = wf.transitions['abandoned']
+ tdef.setProperties(title="""Revert to pending if no supporters""",
+ new_state_id="""Pending""",
+ trigger_type=0,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': "python: not status['confidential'] and not here.assigned_to()", 'guard_permissions': 'Support collector issue'},
+ )
+
+ tdef = wf.transitions['resolve']
+ tdef.setProperties(title="""""",
+ new_state_id="""Resolved""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""resolve""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='confidential', text='python: 0')
+
+ tdef = wf.transitions['reject-test']
+ tdef.setProperties(title="""""",
+ new_state_id="""Accepted""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""""",
+ actbox_name="""reject-test""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='assigned_to', text="python: tuple(state_change.kwargs['assignees'])")
+
+ tdef = wf.transitions['unrestrict_pending']
+ tdef.setProperties(title="""""",
+ new_state_id="""Pending""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""unrestrict_pending""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='confidential', text='python: 0')
+
+ tdef = wf.transitions['request']
+ tdef.setProperties(title="""""",
+ new_state_id="""""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""Request""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': "python: not (status.has_key('requested') and status['requested'])"},
+ )
+ tdef.addVariable(id='requested', text='python: 1')
+ tdef.addVariable(id='assigned_to', text="python: tuple(state_change.kwargs['assignees']) ")
+
+ tdef = wf.transitions['assign']
+ tdef.setProperties(title="""""",
+ new_state_id="""Accepted""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""assign""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': 'not: status/confidential', 'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='assigned_to', text="python: tuple(state_change.kwargs['assignees'])")
+
+ tdef = wf.transitions['accept_confidential']
+ tdef.setProperties(title="""""",
+ new_state_id="""Accepted_confidential""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""accept_confidential""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': "python: status['confidential'] and not here.is_assigned()", 'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='assigned_to', text="python: here.assigned_to() + (state_change.kwargs['username'],)")
+
+ tdef = wf.transitions['assign_confidential']
+ tdef.setProperties(title="""""",
+ new_state_id="""Accepted_confidential""",
+ trigger_type=1,
+ script_name="""""",
+ after_script_name="""None""",
+ actbox_name="""assign_confidential""",
+ actbox_url="""""",
+ actbox_category="""issue_workflow""",
+ props={'guard_expr': 'status/confidential', 'guard_permissions': 'Support collector issue'},
+ )
+ tdef.addVariable(id='assigned_to', text="python: tuple(state_change.kwargs['assignees'])")
+
+ ## State Variable
+ wf.variables.setStateVar('state')
+
+ ## Variables initialization
+ vdef = wf.variables['requested']
+ vdef.setProperties(description="""initial request has been done""",
+ default_value="""""",
+ default_expr="""""",
+ for_catalog=1,
+ for_status=1,
+ update_always=0,
+ props=None)
+
+ vdef = wf.variables['confidential']
+ vdef.setProperties(description="""Retain security_related issues loss of confidentiality on completion""",
+ default_value="""""",
+ default_expr="""""",
+ for_catalog=1,
+ for_status=1,
+ update_always=0,
+ props=None)
+
+ vdef = wf.variables['assigned_to']
+ vdef.setProperties(description="""Supporters assigned to the issue""",
+ default_value="""""",
+ default_expr="""""",
+ for_catalog=1,
+ for_status=1,
+ update_always=0,
+ props=None)
+
+ ## Worklists Initialization
+
+def createCollector_issue_workflow(id):
+ "..."
+ ob = DCWorkflowDefinition(id)
+ setupCollector_issue_workflow(ob)
+ return ob
+
+addWorkflowFactory(createCollector_issue_workflow,
+ id='collector_issue_workflow',
+ title='Collector issue workflow')
+
Property changes on: CMF_Extras/trunk/CMFCollector/workflow.py
___________________________________________________________________
Name: svn:eol-style
+ native
More information about the Checkins
mailing list