source: products/qClickTrackingTool/tags/0.4.4/Workflow.py

Last change on this file was 1, checked in by myroslav, 18 years ago

Building directory structure

File size: 2.5 KB
Line 
1from Products.DCWorkflow.DCWorkflow import DCWorkflowDefinition
2from Products.CMFCore.CMFCorePermissions import ModifyPortalContent
3from AccessControl.Permissions import view, access_contents_information
4from Products.DCWorkflow.Default import r_anon, r_manager, r_owner, p_access, p_modify, p_view
5from Products.CMFCore import CMFCorePermissions
6
7def setupWorkflow(wf):
8    for state in  ('private', 'published',):
9        wf.states.addState(state)
10    for transition in ('publish', 'hide'):
11        wf.transitions.addTransition(transition)
12    for permision in (p_access, p_modify, view):
13        wf.addManagedPermission(permision)
14
15    # set initial state
16    wf.states.setInitialState('published')
17
18    wf_private = wf.states['private']
19    wf_private.setProperties(
20                             title='Visible and editable only by owner',
21                             transitions=('publish',))
22    wf_private.setPermission(p_access, 0, (r_manager, r_owner))
23    wf_private.setPermission(p_view, 0, (r_manager, r_owner))
24    wf_private.setPermission(p_modify, 0, (r_manager, r_owner))
25
26    wf.permissions+=(CMFCorePermissions.ListFolderContents, )
27    wf.states.private.permission_roles[CMFCorePermissions.ListFolderContents]=['Authenticated', r_manager]
28
29    wf_published = wf.states['published']
30    wf_published.setProperties(
31                               title='Public',
32                               transitions=('hide',))
33    wf_published.setPermission(p_access, 1, (r_manager,))
34    wf_published.setPermission(p_view, 1, (r_anon, r_manager))
35    wf_published.setPermission(p_modify, 0, (r_manager, ))
36
37    wf.states.published.permission_roles[CMFCorePermissions.ListFolderContents]=[r_anon,]
38
39    tdef = wf.transitions['hide']
40    tdef.setProperties(
41                       title='Member makes content private',
42                       new_state_id='private',
43                       actbox_name='Make private',
44                       actbox_url='%(content_url)s/content_hide_form',
45                       props={'guard_roles':r_owner})
46
47    tdef = wf.transitions['publish']
48    tdef.setProperties(
49                       title='Reviewer publishes content',
50                       new_state_id='published',
51                       actbox_name='Publish',
52                       actbox_url='%(content_url)s/content_publish_form',
53                       props={'guard_permissions':r_anon})
54       
55    wf.variables.setStateVar('review_state')
56     
57#create workflow
58def createWorkflow(id):
59    wf = DCWorkflowDefinition(id)
60    setupWorkflow(wf)
61    return wf
62
Note: See TracBrowser for help on using the repository browser.