Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
Products.DCWorkflow
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
Products.DCWorkflow
Commits
ac25989c
Commit
ac25989c
authored
Sep 17, 2008
by
Jens Vagelpohl
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
- Worklists and Transitions: Add icon expression properties to worklist
and transition actions and their GenericSetup profiles.
parent
350bae91
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
100 additions
and
38 deletions
+100
-38
Products/DCWorkflow/CHANGES.txt
Products/DCWorkflow/CHANGES.txt
+3
-0
Products/DCWorkflow/DCWorkflow.py
Products/DCWorkflow/DCWorkflow.py
+2
-0
Products/DCWorkflow/Transitions.py
Products/DCWorkflow/Transitions.py
+3
-1
Products/DCWorkflow/Worklists.py
Products/DCWorkflow/Worklists.py
+3
-1
Products/DCWorkflow/dtml/transition_properties.dtml
Products/DCWorkflow/dtml/transition_properties.dtml
+7
-0
Products/DCWorkflow/dtml/worklist_properties.dtml
Products/DCWorkflow/dtml/worklist_properties.dtml
+7
-0
Products/DCWorkflow/exportimport.py
Products/DCWorkflow/exportimport.py
+12
-1
Products/DCWorkflow/profiles/revision2/workflows/default_workflow/definition.xml
...files/revision2/workflows/default_workflow/definition.xml
+7
-0
Products/DCWorkflow/tests/test_exportimport.py
Products/DCWorkflow/tests/test_exportimport.py
+54
-35
Products/DCWorkflow/xml/wtcWorkflowExport.xml
Products/DCWorkflow/xml/wtcWorkflowExport.xml
+2
-0
No files found.
Products/DCWorkflow/CHANGES.txt
View file @
ac25989c
...
@@ -4,6 +4,9 @@ Products.DCWorkflow Changelog
...
@@ -4,6 +4,9 @@ Products.DCWorkflow Changelog
2.2.0 (unreleased)
2.2.0 (unreleased)
------------------
------------------
- Worklists and Transitions: Add icon expression properties to worklist
and transition actions and their GenericSetup profiles.
- Fixed an import error (Products.PageTemplates.TALES is gone on
- Fixed an import error (Products.PageTemplates.TALES is gone on
Zope trunk). Because we require Zope >= 2.10, we don't need a
Zope trunk). Because we require Zope >= 2.10, we don't need a
BBB conditional import.
BBB conditional import.
...
...
Products/DCWorkflow/DCWorkflow.py
View file @
ac25989c
...
@@ -200,6 +200,7 @@ class DCWorkflowDefinition(WorkflowUIMixin, Folder):
...
@@ -200,6 +200,7 @@ class DCWorkflowDefinition(WorkflowUIMixin, Folder):
'id'
:
tid
,
'id'
:
tid
,
'name'
:
tdef
.
actbox_name
%
info
,
'name'
:
tdef
.
actbox_name
%
info
,
'url'
:
tdef
.
actbox_url
%
info
,
'url'
:
tdef
.
actbox_url
%
info
,
'icon'
:
tdef
.
actbox_icon
%
info
,
'permissions'
:
(),
# Predetermined.
'permissions'
:
(),
# Predetermined.
'category'
:
tdef
.
actbox_category
,
'category'
:
tdef
.
actbox_category
,
'transition'
:
tdef
}))
'transition'
:
tdef
}))
...
@@ -243,6 +244,7 @@ class DCWorkflowDefinition(WorkflowUIMixin, Folder):
...
@@ -243,6 +244,7 @@ class DCWorkflowDefinition(WorkflowUIMixin, Folder):
res
.
append
((
id
,
{
'id'
:
id
,
res
.
append
((
id
,
{
'id'
:
id
,
'name'
:
qdef
.
actbox_name
%
fmt_data
,
'name'
:
qdef
.
actbox_name
%
fmt_data
,
'url'
:
qdef
.
actbox_url
%
fmt_data
,
'url'
:
qdef
.
actbox_url
%
fmt_data
,
'icon'
:
qdef
.
actbox_icon
%
fmt_data
,
'permissions'
:
(),
# Predetermined.
'permissions'
:
(),
# Predetermined.
'category'
:
qdef
.
actbox_category
}))
'category'
:
qdef
.
actbox_category
}))
fmt_data
.
_pop
()
fmt_data
.
_pop
()
...
...
Products/DCWorkflow/Transitions.py
View file @
ac25989c
...
@@ -48,6 +48,7 @@ class TransitionDefinition (SimpleItem):
...
@@ -48,6 +48,7 @@ class TransitionDefinition (SimpleItem):
guard
=
None
guard
=
None
actbox_name
=
''
actbox_name
=
''
actbox_url
=
''
actbox_url
=
''
actbox_icon
=
''
actbox_category
=
'workflow'
actbox_category
=
'workflow'
var_exprs
=
None
# A mapping.
var_exprs
=
None
# A mapping.
script_name
=
None
# Executed before transition
script_name
=
None
# Executed before transition
...
@@ -112,7 +113,7 @@ class TransitionDefinition (SimpleItem):
...
@@ -112,7 +113,7 @@ class TransitionDefinition (SimpleItem):
trigger_type
=
TRIGGER_USER_ACTION
,
script_name
=
''
,
trigger_type
=
TRIGGER_USER_ACTION
,
script_name
=
''
,
after_script_name
=
''
,
after_script_name
=
''
,
actbox_name
=
''
,
actbox_url
=
''
,
actbox_name
=
''
,
actbox_url
=
''
,
actbox_category
=
'workflow'
,
actbox_category
=
'workflow'
,
actbox_icon
=
''
,
props
=
None
,
REQUEST
=
None
,
description
=
''
):
props
=
None
,
REQUEST
=
None
,
description
=
''
):
'''
'''
'''
'''
...
@@ -129,6 +130,7 @@ class TransitionDefinition (SimpleItem):
...
@@ -129,6 +130,7 @@ class TransitionDefinition (SimpleItem):
self
.
guard
=
None
self
.
guard
=
None
self
.
actbox_name
=
str
(
actbox_name
)
self
.
actbox_name
=
str
(
actbox_name
)
self
.
actbox_url
=
str
(
actbox_url
)
self
.
actbox_url
=
str
(
actbox_url
)
self
.
actbox_icon
=
str
(
actbox_icon
)
self
.
actbox_category
=
str
(
actbox_category
)
self
.
actbox_category
=
str
(
actbox_category
)
if
REQUEST
is
not
None
:
if
REQUEST
is
not
None
:
return
self
.
manage_properties
(
REQUEST
,
'Properties changed.'
)
return
self
.
manage_properties
(
REQUEST
,
'Properties changed.'
)
...
...
Products/DCWorkflow/Worklists.py
View file @
ac25989c
...
@@ -41,6 +41,7 @@ class WorklistDefinition(SimpleItem):
...
@@ -41,6 +41,7 @@ class WorklistDefinition(SimpleItem):
var_matches
=
None
# Compared with catalog when set.
var_matches
=
None
# Compared with catalog when set.
actbox_name
=
''
actbox_name
=
''
actbox_url
=
''
actbox_url
=
''
actbox_icon
=
''
actbox_category
=
'global'
actbox_category
=
'global'
guard
=
None
guard
=
None
...
@@ -108,7 +109,7 @@ class WorklistDefinition(SimpleItem):
...
@@ -108,7 +109,7 @@ class WorklistDefinition(SimpleItem):
def
setProperties
(
self
,
description
,
def
setProperties
(
self
,
description
,
actbox_name
=
''
,
actbox_url
=
''
,
actbox_category
=
'global'
,
actbox_name
=
''
,
actbox_url
=
''
,
actbox_category
=
'global'
,
props
=
None
,
REQUEST
=
None
):
actbox_icon
=
''
,
props
=
None
,
REQUEST
=
None
):
'''
'''
'''
'''
if
props
is
None
:
if
props
is
None
:
...
@@ -129,6 +130,7 @@ class WorklistDefinition(SimpleItem):
...
@@ -129,6 +130,7 @@ class WorklistDefinition(SimpleItem):
self
.
actbox_name
=
str
(
actbox_name
)
self
.
actbox_name
=
str
(
actbox_name
)
self
.
actbox_url
=
str
(
actbox_url
)
self
.
actbox_url
=
str
(
actbox_url
)
self
.
actbox_category
=
str
(
actbox_category
)
self
.
actbox_category
=
str
(
actbox_category
)
self
.
actbox_icon
=
str
(
actbox_icon
)
g
=
Guard
()
g
=
Guard
()
if
g
.
changeFromProperties
(
props
or
REQUEST
):
if
g
.
changeFromProperties
(
props
or
REQUEST
):
self
.
guard
=
g
self
.
guard
=
g
...
...
Products/DCWorkflow/dtml/transition_properties.dtml
View file @
ac25989c
...
@@ -110,6 +110,13 @@ Initiated by user action
...
@@ -110,6 +110,13 @@ Initiated by user action
value="&dtml-actbox_url;" size="50" />
value="&dtml-actbox_url;" size="50" />
</td>
</td>
</tr>
</tr>
<tr>
<th align="left">Icon URL (formatted)</th>
<td>
<input type="text" name="actbox_icon"
value="&dtml-actbox_icon;" size="50" />
</td>
</tr>
<tr>
<tr>
<th align="left">Category</th>
<th align="left">Category</th>
<td>
<td>
...
...
Products/DCWorkflow/dtml/worklist_properties.dtml
View file @
ac25989c
...
@@ -57,6 +57,13 @@
...
@@ -57,6 +57,13 @@
value="&dtml-actbox_url;" size="50" />
value="&dtml-actbox_url;" size="50" />
</td>
</td>
</tr>
</tr>
<tr>
<th align="left">Icon URL (formatted)</th>
<td>
<input type="text" name="actbox_icon"
value="&dtml-actbox_icon;" size="50" />
</td>
</tr>
<tr>
<tr>
<th align="left">Category</th>
<th align="left">Category</th>
<td>
<td>
...
...
Products/DCWorkflow/exportimport.py
View file @
ac25989c
...
@@ -437,6 +437,9 @@ class WorkflowDefinitionConfigurator( Implicit ):
...
@@ -437,6 +437,9 @@ class WorkflowDefinitionConfigurator( Implicit ):
'actbox_url' -- the URL of the action by which the user
'actbox_url' -- the URL of the action by which the user
triggers the transition
triggers the transition
'actbox_icon' -- the icon URL for the action by which the user
triggers the transition
'actbox_category' -- the category of the action by which the user
'actbox_category' -- the category of the action by which the user
triggers the transition
triggers the transition
...
@@ -475,6 +478,7 @@ class WorkflowDefinitionConfigurator( Implicit ):
...
@@ -475,6 +478,7 @@ class WorkflowDefinitionConfigurator( Implicit ):
,
'after_script_name'
:
v
.
after_script_name
,
'after_script_name'
:
v
.
after_script_name
,
'actbox_name'
:
v
.
actbox_name
,
'actbox_name'
:
v
.
actbox_name
,
'actbox_url'
:
v
.
actbox_url
,
'actbox_url'
:
v
.
actbox_url
,
'actbox_icon'
:
v
.
actbox_icon
,
'actbox_category'
:
v
.
actbox_category
,
'actbox_category'
:
v
.
actbox_category
,
'variables'
:
v_info
,
'variables'
:
v_info
,
'guard_permissions'
:
guard
.
permissions
,
'guard_permissions'
:
guard
.
permissions
...
@@ -509,6 +513,9 @@ class WorkflowDefinitionConfigurator( Implicit ):
...
@@ -509,6 +513,9 @@ class WorkflowDefinitionConfigurator( Implicit ):
'actbox_url' -- the URL of the "action" corresponding to the
'actbox_url' -- the URL of the "action" corresponding to the
worklist
worklist
'actbox_icon' -- the icon URL of the "action" corresponding to
the worklist
'actbox_category' -- the category of the "action" corresponding
'actbox_category' -- the category of the "action" corresponding
to the worklist
to the worklist
...
@@ -539,6 +546,7 @@ class WorkflowDefinitionConfigurator( Implicit ):
...
@@ -539,6 +546,7 @@ class WorkflowDefinitionConfigurator( Implicit ):
,
'var_match'
:
var_match
,
'var_match'
:
var_match
,
'actbox_name'
:
v
.
actbox_name
,
'actbox_name'
:
v
.
actbox_name
,
'actbox_url'
:
v
.
actbox_url
,
'actbox_url'
:
v
.
actbox_url
,
'actbox_icon'
:
v
.
actbox_icon
,
'actbox_category'
:
v
.
actbox_category
,
'actbox_category'
:
v
.
actbox_category
,
'guard_permissions'
:
guard
.
permissions
,
'guard_permissions'
:
guard
.
permissions
,
'guard_roles'
:
guard
.
roles
,
'guard_roles'
:
guard
.
roles
...
@@ -800,13 +808,14 @@ def _extractActionNode( parent, encoding=None ):
...
@@ -800,13 +808,14 @@ def _extractActionNode( parent, encoding=None ):
assert
len
(
nodes
)
<=
1
,
nodes
assert
len
(
nodes
)
<=
1
,
nodes
if
len
(
nodes
)
<
1
:
if
len
(
nodes
)
<
1
:
return
{
'name'
:
''
,
'url'
:
''
,
'category'
:
''
}
return
{
'name'
:
''
,
'url'
:
''
,
'category'
:
''
,
'icon'
:
''
}
node
=
nodes
[
0
]
node
=
nodes
[
0
]
return
{
'name'
:
_coalesceTextNodeChildren
(
node
,
encoding
)
return
{
'name'
:
_coalesceTextNodeChildren
(
node
,
encoding
)
,
'url'
:
_getNodeAttribute
(
node
,
'url'
,
encoding
)
,
'url'
:
_getNodeAttribute
(
node
,
'url'
,
encoding
)
,
'category'
:
_getNodeAttribute
(
node
,
'category'
,
encoding
)
,
'category'
:
_getNodeAttribute
(
node
,
'category'
,
encoding
)
,
'icon'
:
_queryNodeAttribute
(
node
,
'icon'
,
''
,
encoding
)
}
}
def
_extractGuardNode
(
parent
,
encoding
=
None
):
def
_extractGuardNode
(
parent
,
encoding
=
None
):
...
@@ -1087,6 +1096,7 @@ def _initDCWorkflowTransitions( workflow, transitions ):
...
@@ -1087,6 +1096,7 @@ def _initDCWorkflowTransitions( workflow, transitions ):
,
actbox_name
=
action
[
'name'
]
,
actbox_name
=
action
[
'name'
]
,
actbox_url
=
action
[
'url'
]
,
actbox_url
=
action
[
'url'
]
,
actbox_category
=
action
[
'category'
]
,
actbox_category
=
action
[
'category'
]
,
actbox_icon
=
action
.
get
(
'icon'
,
''
)
,
props
=
props
,
props
=
props
)
)
var_mapping
=
[(
name
,
Expression
(
text
))
for
name
,
text
in
var_mapping
=
[(
name
,
Expression
(
text
))
for
name
,
text
in
...
@@ -1121,6 +1131,7 @@ def _initDCWorkflowWorklists( workflow, worklists ):
...
@@ -1121,6 +1131,7 @@ def _initDCWorkflowWorklists( workflow, worklists ):
,
actbox_name
=
action
[
'name'
]
,
actbox_name
=
action
[
'name'
]
,
actbox_url
=
action
[
'url'
]
,
actbox_url
=
action
[
'url'
]
,
actbox_category
=
action
[
'category'
]
,
actbox_category
=
action
[
'category'
]
,
actbox_icon
=
action
.
get
(
'icon'
,
''
)
,
props
=
props
,
props
=
props
)
)
...
...
Products/DCWorkflow/profiles/revision2/workflows/default_workflow/definition.xml
View file @
ac25989c
...
@@ -97,6 +97,7 @@
...
@@ -97,6 +97,7 @@
new_state=
"private"
trigger=
"USER"
new_state=
"private"
trigger=
"USER"
before_script=
""
after_script=
""
>
before_script=
""
after_script=
""
>
<action
url=
"%(content_url)s/content_hide_form"
<action
url=
"%(content_url)s/content_hide_form"
icon=
"%(portal_url)s/retract_icon.png"
category=
"workflow"
>
Make private
</action>
category=
"workflow"
>
Make private
</action>
<guard>
<guard>
<guard-role>
Owner
</guard-role>
<guard-role>
Owner
</guard-role>
...
@@ -108,6 +109,7 @@
...
@@ -108,6 +109,7 @@
new_state=
"published"
trigger=
"USER"
new_state=
"published"
trigger=
"USER"
before_script=
""
after_script=
""
>
before_script=
""
after_script=
""
>
<action
url=
"%(object_url)s/content_publish_form"
<action
url=
"%(object_url)s/content_publish_form"
icon=
"%(portal_url)s/approve_icon.png"
category=
"workflow"
>
Publish
</action>
category=
"workflow"
>
Publish
</action>
<guard>
<guard>
<guard-permission>
Review portal content
</guard-permission>
<guard-permission>
Review portal content
</guard-permission>
...
@@ -119,6 +121,7 @@
...
@@ -119,6 +121,7 @@
new_state=
"visible"
trigger=
"USER"
new_state=
"visible"
trigger=
"USER"
before_script=
""
after_script=
""
>
before_script=
""
after_script=
""
>
<action
url=
"%(object_url)s/content_reject_form"
<action
url=
"%(object_url)s/content_reject_form"
icon=
"%(portal_url)s/reject_icon.png"
category=
"workflow"
>
Reject
</action>
category=
"workflow"
>
Reject
</action>
<guard>
<guard>
<guard-permission>
Review portal content
</guard-permission>
<guard-permission>
Review portal content
</guard-permission>
...
@@ -130,6 +133,7 @@
...
@@ -130,6 +133,7 @@
new_state=
"visible"
trigger=
"USER"
new_state=
"visible"
trigger=
"USER"
before_script=
""
after_script=
""
>
before_script=
""
after_script=
""
>
<action
url=
"%(object_url)s/content_retract_form"
<action
url=
"%(object_url)s/content_retract_form"
icon=
"%(portal_url)s/retract_icon.png"
category=
"workflow"
>
Retract
</action>
category=
"workflow"
>
Retract
</action>
<guard>
<guard>
<guard-permission>
Request review
</guard-permission>
<guard-permission>
Request review
</guard-permission>
...
@@ -141,6 +145,7 @@
...
@@ -141,6 +145,7 @@
new_state=
"visible"
trigger=
"USER"
new_state=
"visible"
trigger=
"USER"
before_script=
""
after_script=
""
>
before_script=
""
after_script=
""
>
<action
url=
"%(content_url)s/content_show_form"
<action
url=
"%(content_url)s/content_show_form"
icon=
"%(portal_url)s/approve_icon.png"
category=
"workflow"
>
Make visible
</action>
category=
"workflow"
>
Make visible
</action>
<guard>
<guard>
<guard-role>
Owner
</guard-role>
<guard-role>
Owner
</guard-role>
...
@@ -152,6 +157,7 @@
...
@@ -152,6 +157,7 @@
new_state=
"pending"
trigger=
"USER"
new_state=
"pending"
trigger=
"USER"
before_script=
""
after_script=
""
>
before_script=
""
after_script=
""
>
<action
url=
"%(object_url)s/content_submit_form"
<action
url=
"%(object_url)s/content_submit_form"
icon=
"%(portal_url)s/submit_icon.png"
category=
"workflow"
>
Submit
</action>
category=
"workflow"
>
Submit
</action>
<guard>
<guard>
<guard-permission>
Request review
</guard-permission>
<guard-permission>
Request review
</guard-permission>
...
@@ -161,6 +167,7 @@
...
@@ -161,6 +167,7 @@
<worklist
worklist_id=
"reviewer_queue"
title=
""
>
<worklist
worklist_id=
"reviewer_queue"
title=
""
>
<description>
Reviewer tasks
</description>
<description>
Reviewer tasks
</description>
<action
url=
"%(portal_url)s/search?review_state=pending"
<action
url=
"%(portal_url)s/search?review_state=pending"
icon=
"%(portal_url)s/worklist_icon.png"
category=
"global"
>
Pending (%(count)d)
</action>
category=
"global"
>
Pending (%(count)d)
</action>
<guard>
<guard>
<guard-permission>
Review portal content
</guard-permission>
<guard-permission>
Review portal content
</guard-permission>
...
...
Products/DCWorkflow/tests/test_exportimport.py
View file @
ac25989c
...
@@ -144,11 +144,12 @@ class _WorkflowSetup(WorkflowSetupBase):
...
@@ -144,11 +144,12 @@ class _WorkflowSetup(WorkflowSetupBase):
,
after_script_name
=
v
[
5
]
,
after_script_name
=
v
[
5
]
,
actbox_name
=
v
[
6
]
,
actbox_name
=
v
[
6
]
,
actbox_url
=
v
[
7
]
,
actbox_url
=
v
[
7
]
,
actbox_category
=
v
[
8
]
,
actbox_icon
=
v
[
8
]
,
actbox_category
=
v
[
9
]
,
props
=
self
.
_genGuardProps
(
*
v
[
-
4
:
]
)
,
props
=
self
.
_genGuardProps
(
*
v
[
-
4
:
]
)
)
)
for
k
,
v
in
v
[
9
].
items
():
for
k
,
v
in
v
[
10
].
items
():
transition
.
addVariable
(
k
,
v
)
transition
.
addVariable
(
k
,
v
)
def
_initWorklists
(
self
,
dcworkflow
):
def
_initWorklists
(
self
,
dcworkflow
):
...
@@ -168,7 +169,8 @@ class _WorkflowSetup(WorkflowSetupBase):
...
@@ -168,7 +169,8 @@ class _WorkflowSetup(WorkflowSetupBase):
worklist
.
setProperties
(
description
=
v
[
1
]
worklist
.
setProperties
(
description
=
v
[
1
]
,
actbox_name
=
v
[
3
]
,
actbox_name
=
v
[
3
]
,
actbox_url
=
v
[
4
]
,
actbox_url
=
v
[
4
]
,
actbox_category
=
v
[
5
]
,
actbox_icon
=
v
[
5
]
,
actbox_category
=
v
[
6
]
,
props
=
props
,
props
=
props
)
)
...
@@ -377,14 +379,15 @@ class WorkflowDefinitionConfiguratorTests( _WorkflowSetup, _GuardChecker ):
...
@@ -377,14 +379,15 @@ class WorkflowDefinitionConfiguratorTests( _WorkflowSetup, _GuardChecker ):
self
.
assertEqual
(
info
[
'after_script_name'
],
expected
[
5
]
)
self
.
assertEqual
(
info
[
'after_script_name'
],
expected
[
5
]
)
self
.
assertEqual
(
info
[
'actbox_name'
],
expected
[
6
]
)
self
.
assertEqual
(
info
[
'actbox_name'
],
expected
[
6
]
)
self
.
assertEqual
(
info
[
'actbox_url'
],
expected
[
7
]
)
self
.
assertEqual
(
info
[
'actbox_url'
],
expected
[
7
]
)
self
.
assertEqual
(
info
[
'actbox_category'
],
expected
[
8
]
)
self
.
assertEqual
(
info
[
'actbox_icon'
],
expected
[
8
]
)
self
.
assertEqual
(
info
[
'actbox_category'
],
expected
[
9
]
)
variables
=
info
[
'variables'
]
variables
=
info
[
'variables'
]
self
.
assertEqual
(
len
(
variables
),
len
(
expected
[
9
]
)
)
self
.
assertEqual
(
len
(
variables
),
len
(
expected
[
10
]
)
)
for
v_info
in
variables
:
for
v_info
in
variables
:
self
.
assertEqual
(
v_info
[
'expr'
]
self
.
assertEqual
(
v_info
[
'expr'
]
,
expected
[
9
][
v_info
[
'name'
]
]
)
,
expected
[
10
][
v_info
[
'name'
]
]
)
self
.
_assertGuard
(
info
,
*
expected
[
-
4
:
]
)
self
.
_assertGuard
(
info
,
*
expected
[
-
4
:
]
)
...
@@ -415,7 +418,8 @@ class WorkflowDefinitionConfiguratorTests( _WorkflowSetup, _GuardChecker ):
...
@@ -415,7 +418,8 @@ class WorkflowDefinitionConfiguratorTests( _WorkflowSetup, _GuardChecker ):
self
.
assertEqual
(
info
[
'description'
],
expected
[
1
]
)
self
.
assertEqual
(
info
[
'description'
],
expected
[
1
]
)
self
.
assertEqual
(
info
[
'actbox_name'
],
expected
[
3
]
)
self
.
assertEqual
(
info
[
'actbox_name'
],
expected
[
3
]
)
self
.
assertEqual
(
info
[
'actbox_url'
],
expected
[
4
]
)
self
.
assertEqual
(
info
[
'actbox_url'
],
expected
[
4
]
)
self
.
assertEqual
(
info
[
'actbox_category'
],
expected
[
5
]
)
self
.
assertEqual
(
info
[
'actbox_icon'
],
expected
[
5
]
)
self
.
assertEqual
(
info
[
'actbox_category'
],
expected
[
6
]
)
var_match
=
info
[
'var_match'
]
var_match
=
info
[
'var_match'
]
self
.
assertEqual
(
len
(
var_match
),
len
(
expected
[
2
]
)
)
self
.
assertEqual
(
len
(
var_match
),
len
(
expected
[
2
]
)
)
...
@@ -765,18 +769,19 @@ class WorkflowDefinitionConfiguratorTests( _WorkflowSetup, _GuardChecker ):
...
@@ -765,18 +769,19 @@ class WorkflowDefinitionConfiguratorTests( _WorkflowSetup, _GuardChecker ):
action
=
transition
[
'action'
]
action
=
transition
[
'action'
]
self
.
assertEqual
(
action
.
get
(
'name'
,
''
),
expected
[
6
]
)
self
.
assertEqual
(
action
.
get
(
'name'
,
''
),
expected
[
6
]
)
self
.
assertEqual
(
action
.
get
(
'url'
,
''
),
expected
[
7
]
)
self
.
assertEqual
(
action
.
get
(
'url'
,
''
),
expected
[
7
]
)
self
.
assertEqual
(
action
.
get
(
'category'
,
''
),
expected
[
8
]
)
self
.
assertEqual
(
action
.
get
(
'icon'
,
''
),
expected
[
8
]
)
self
.
assertEqual
(
action
.
get
(
'category'
,
''
),
expected
[
9
]
)
self
.
assertEqual
(
transition
[
'variables'
],
expected
[
9
]
)
self
.
assertEqual
(
transition
[
'variables'
],
expected
[
10
]
)
guard
=
transition
[
'guard'
]
guard
=
transition
[
'guard'
]
self
.
assertEqual
(
tuple
(
guard
.
get
(
'permissions'
,
()
)
)
self
.
assertEqual
(
tuple
(
guard
.
get
(
'permissions'
,
()
)
)
,
expected
[
10
]
)
self
.
assertEqual
(
tuple
(
guard
.
get
(
'roles'
,
()
)
)
,
expected
[
11
]
)
,
expected
[
11
]
)
self
.
assertEqual
(
tuple
(
guard
.
get
(
'
group
s'
,
()
)
)
self
.
assertEqual
(
tuple
(
guard
.
get
(
'
role
s'
,
()
)
)
,
expected
[
12
]
)
,
expected
[
12
]
)
self
.
assertEqual
(
guard
.
get
(
'expression'
,
''
),
expected
[
13
]
)
self
.
assertEqual
(
tuple
(
guard
.
get
(
'groups'
,
()
)
)
,
expected
[
13
]
)
self
.
assertEqual
(
guard
.
get
(
'expression'
,
''
),
expected
[
14
]
)
def
test_parseWorkflowXML_normal_variables
(
self
):
def
test_parseWorkflowXML_normal_variables
(
self
):
...
@@ -907,16 +912,17 @@ class WorkflowDefinitionConfiguratorTests( _WorkflowSetup, _GuardChecker ):
...
@@ -907,16 +912,17 @@ class WorkflowDefinitionConfiguratorTests( _WorkflowSetup, _GuardChecker ):
action
=
worklist
[
'action'
]
action
=
worklist
[
'action'
]
self
.
assertEqual
(
action
.
get
(
'name'
,
''
),
expected
[
3
]
)
self
.
assertEqual
(
action
.
get
(
'name'
,
''
),
expected
[
3
]
)
self
.
assertEqual
(
action
.
get
(
'url'
,
''
),
expected
[
4
]
)
self
.
assertEqual
(
action
.
get
(
'url'
,
''
),
expected
[
4
]
)
self
.
assertEqual
(
action
.
get
(
'category'
,
''
),
expected
[
5
]
)
self
.
assertEqual
(
action
.
get
(
'icon'
,
''
),
expected
[
5
]
)
self
.
assertEqual
(
action
.
get
(
'category'
,
''
),
expected
[
6
]
)
guard
=
worklist
[
'guard'
]
guard
=
worklist
[
'guard'
]
self
.
assertEqual
(
tuple
(
guard
.
get
(
'permissions'
,
()
)
)
self
.
assertEqual
(
tuple
(
guard
.
get
(
'permissions'
,
()
)
)
,
expected
[
6
]
)
self
.
assertEqual
(
tuple
(
guard
.
get
(
'roles'
,
()
)
)
,
expected
[
7
]
)
,
expected
[
7
]
)
self
.
assertEqual
(
tuple
(
guard
.
get
(
'
group
s'
,
()
)
)
self
.
assertEqual
(
tuple
(
guard
.
get
(
'
role
s'
,
()
)
)
,
expected
[
8
]
)
,
expected
[
8
]
)
self
.
assertEqual
(
guard
.
get
(
'expression'
,
''
),
expected
[
9
]
)
self
.
assertEqual
(
tuple
(
guard
.
get
(
'groups'
,
()
)
)
,
expected
[
9
]
)
self
.
assertEqual
(
guard
.
get
(
'expression'
,
''
),
expected
[
10
]
)
def
test_parseWorkflowXML_normal_permissions
(
self
):
def
test_parseWorkflowXML_normal_permissions
(
self
):
...
@@ -1094,6 +1100,7 @@ _WF_TRANSITIONS = \
...
@@ -1094,6 +1100,7 @@ _WF_TRANSITIONS = \
,
''
,
''
,
'Open'
,
'Open'
,
'string:${object_url}/open_for_modifications'
,
'string:${object_url}/open_for_modifications'
,
'string:${portal_url}/open.png'
,
'workflow'
,
'workflow'
,
{
'when_opened'
:
'object/ZopeTime'
}
,
{
'when_opened'
:
'object/ZopeTime'
}
,
(
'Open content for modifications'
,
)
,
(
'Open content for modifications'
,
)
...
@@ -1109,6 +1116,7 @@ _WF_TRANSITIONS = \
...
@@ -1109,6 +1116,7 @@ _WF_TRANSITIONS = \
,
'after_close'
,
'after_close'
,
'Close'
,
'Close'
,
'string:${object_url}/close_for_modifications'
,
'string:${object_url}/close_for_modifications'
,
'string:${portal_url}/close.png'
,
'workflow'
,
'workflow'
,
{}
,
{}
,
()
,
()
...
@@ -1124,6 +1132,7 @@ _WF_TRANSITIONS = \
...
@@ -1124,6 +1132,7 @@ _WF_TRANSITIONS = \
,
'after_kill'
,
'after_kill'
,
'Kill'
,
'Kill'
,
'string:${object_url}/kill_object'
,
'string:${object_url}/kill_object'
,
'string:${portal_url}/kill.png'
,
'workflow'
,
'workflow'
,
{
'killed_by'
:
'string:${user/getId}'
}
,
{
'killed_by'
:
'string:${user/getId}'
}
,
()
,
()
...
@@ -1140,6 +1149,7 @@ _WF_TRANSITIONS = \
...
@@ -1140,6 +1149,7 @@ _WF_TRANSITIONS = \
,
''
,
''
,
''
,
''
,
''
,
''
,
''
,
{
'when_expired'
:
'object/ZopeTime'
}
,
{
'when_expired'
:
'object/ZopeTime'
}
,
()
,
()
,
()
,
()
...
@@ -1154,6 +1164,7 @@ _WF_WORKLISTS = \
...
@@ -1154,6 +1164,7 @@ _WF_WORKLISTS = \
,
{
'state'
:
(
'expired'
,
)
}
,
{
'state'
:
(
'expired'
,
)
}
,
'Expired items'
,
'Expired items'
,
'string:${portal_url}/expired_items'
,
'string:${portal_url}/expired_items'
,
'string:${portal_url}/expired.png'
,
'workflow'
,
'workflow'
,
(
'Restore expired content'
,
)
,
(
'Restore expired content'
,
)
,
()
,
()
...
@@ -1165,6 +1176,7 @@ _WF_WORKLISTS = \
...
@@ -1165,6 +1176,7 @@ _WF_WORKLISTS = \
,
{
'state'
:
(
'open'
,
'closed'
)
}
,
{
'state'
:
(
'open'
,
'closed'
)
}
,
'Expired items'
,
'Expired items'
,
'string:${portal_url}/expired_items'
,
'string:${portal_url}/expired_items'
,
'string:${portal_url}/alive.png'
,
'workflow'
,
'workflow'
,
(
'Restore expired content'
,
)
,
(
'Restore expired content'
,
)
,
()
,
()
...
@@ -1623,7 +1635,8 @@ _NORMAL_WORKFLOW_EXPORT = """\
...
@@ -1623,7 +1635,8 @@ _NORMAL_WORKFLOW_EXPORT = """\
<description>Close the object for modifications</description>
<description>Close the object for modifications</description>
<action
<action
category="workflow"
category="workflow"
url="string:${object_url}/close_for_modifications">Close</action>
url="string:${object_url}/close_for_modifications"
icon="string:${portal_url}/close.png">Close</action>
<guard>
<guard>
<guard-role>Owner</guard-role>
<guard-role>Owner</guard-role>
<guard-role>Manager</guard-role>
<guard-role>Manager</guard-role>
...
@@ -1653,7 +1666,8 @@ _NORMAL_WORKFLOW_EXPORT = """\
...
@@ -1653,7 +1666,8 @@ _NORMAL_WORKFLOW_EXPORT = """\
<description>Make the object permanently unavailable.</description>
<description>Make the object permanently unavailable.</description>
<action
<action
category="workflow"
category="workflow"
url="string:${object_url}/kill_object">Kill</action>
url="string:${object_url}/kill_object"
icon="string:${portal_url}/kill.png">Kill</action>
<guard>
<guard>
<guard-group>Content_assassins</guard-group>
<guard-group>Content_assassins</guard-group>
</guard>
</guard>
...
@@ -1670,7 +1684,8 @@ _NORMAL_WORKFLOW_EXPORT = """\
...
@@ -1670,7 +1684,8 @@ _NORMAL_WORKFLOW_EXPORT = """\
<description>Open the object for modifications</description>
<description>Open the object for modifications</description>
<action
<action
category="workflow"
category="workflow"
url="string:${object_url}/open_for_modifications">Open</action>
url="string:${object_url}/open_for_modifications"
icon="string:${portal_url}/open.png">Open</action>
<guard>
<guard>
<guard-permission>Open content for modifications</guard-permission>
<guard-permission>Open content for modifications</guard-permission>
</guard>
</guard>
...
@@ -1683,7 +1698,8 @@ _NORMAL_WORKFLOW_EXPORT = """\
...
@@ -1683,7 +1698,8 @@ _NORMAL_WORKFLOW_EXPORT = """\
<description>Worklist for content not yet expired / killed</description>
<description>Worklist for content not yet expired / killed</description>
<action
<action
category="workflow"
category="workflow"
url="string:${portal_url}/expired_items">Expired items</action>
url="string:${portal_url}/expired_items"
icon="string:${portal_url}/alive.png">Expired items</action>
<guard>
<guard>
<guard-permission>Restore expired content</guard-permission>
<guard-permission>Restore expired content</guard-permission>
</guard>
</guard>
...
@@ -1695,7 +1711,8 @@ _NORMAL_WORKFLOW_EXPORT = """\
...
@@ -1695,7 +1711,8 @@ _NORMAL_WORKFLOW_EXPORT = """\
<description>Worklist for expired content</description>
<description>Worklist for expired content</description>
<action
<action
category="workflow"
category="workflow"
url="string:${portal_url}/expired_items">Expired items</action>
url="string:${portal_url}/expired_items"
icon="string:${portal_url}/expired.png">Expired items</action>
<guard>
<guard>
<guard-permission>Restore expired content</guard-permission>
<guard-permission>Restore expired content</guard-permission>
</guard>
</guard>
...
@@ -2313,21 +2330,22 @@ class Test_importWorkflow(_WorkflowSetup, _GuardChecker):
...
@@ -2313,21 +2330,22 @@ class Test_importWorkflow(_WorkflowSetup, _GuardChecker):
self
.
assertEqual
(
transition
.
after_script_name
,
expected
[
5
]
)
self
.
assertEqual
(
transition
.
after_script_name
,
expected
[
5
]
)
self
.
assertEqual
(
transition
.
actbox_name
,
expected
[
6
]
)
self
.
assertEqual
(
transition
.
actbox_name
,
expected
[
6
]
)
self
.
assertEqual
(
transition
.
actbox_url
,
expected
[
7
]
)
self
.
assertEqual
(
transition
.
actbox_url
,
expected
[
7
]
)
self
.
assertEqual
(
transition
.
actbox_category
,
expected
[
8
]
)
self
.
assertEqual
(
transition
.
actbox_icon
,
expected
[
8
]
)
self
.
assertEqual
(
transition
.
actbox_category
,
expected
[
9
]
)
var_exprs
=
transition
.
var_exprs
var_exprs
=
transition
.
var_exprs
self
.
assertEqual
(
len
(
var_exprs
),
len
(
expected
[
9
]
)
)
self
.
assertEqual
(
len
(
var_exprs
),
len
(
expected
[
10
]
)
)
for
var_id
,
expr
in
var_exprs
.
items
():
for
var_id
,
expr
in
var_exprs
.
items
():
self
.
assertEqual
(
expr
.
text
,
expected
[
9
][
var_id
]
)
self
.
assertEqual
(
expr
.
text
,
expected
[
10
][
var_id
]
)
guard
=
transition
.
getGuard
()
guard
=
transition
.
getGuard
()
self
.
assertEqual
(
guard
.
permissions
,
expected
[
1
0
]
)
self
.
assertEqual
(
guard
.
permissions
,
expected
[
1
1
]
)
self
.
assertEqual
(
guard
.
roles
,
expected
[
1
1
]
)
self
.
assertEqual
(
guard
.
roles
,
expected
[
1
2
]
)
self
.
assertEqual
(
guard
.
groups
,
expected
[
1
2
]
)
self
.
assertEqual
(
guard
.
groups
,
expected
[
1
3
]
)
self
.
assertEqual
(
guard
.
getExprText
(),
expected
[
1
3
]
)
self
.
assertEqual
(
guard
.
getExprText
(),
expected
[
1
4
]
)
def
test_from_empty_dcworkflow_workflow_worklists
(
self
):
def
test_from_empty_dcworkflow_workflow_worklists
(
self
):
...
@@ -2364,14 +2382,15 @@ class Test_importWorkflow(_WorkflowSetup, _GuardChecker):
...
@@ -2364,14 +2382,15 @@ class Test_importWorkflow(_WorkflowSetup, _GuardChecker):
self
.
assertEqual
(
worklist
.
actbox_name
,
expected
[
3
]
)
self
.
assertEqual
(
worklist
.
actbox_name
,
expected
[
3
]
)
self
.
assertEqual
(
worklist
.
actbox_url
,
expected
[
4
]
)
self
.
assertEqual
(
worklist
.
actbox_url
,
expected
[
4
]
)
self
.
assertEqual
(
worklist
.
actbox_category
,
expected
[
5
]
)
self
.
assertEqual
(
worklist
.
actbox_icon
,
expected
[
5
]
)
self
.
assertEqual
(
worklist
.
actbox_category
,
expected
[
6
]
)
guard
=
worklist
.
getGuard
()
guard
=
worklist
.
getGuard
()
self
.
assertEqual
(
guard
.
permissions
,
expected
[
6
]
)
self
.
assertEqual
(
guard
.
permissions
,
expected
[
7
]
)
self
.
assertEqual
(
guard
.
roles
,
expected
[
7
]
)
self
.
assertEqual
(
guard
.
roles
,
expected
[
8
]
)
self
.
assertEqual
(
guard
.
groups
,
expected
[
8
]
)
self
.
assertEqual
(
guard
.
groups
,
expected
[
9
]
)
self
.
assertEqual
(
guard
.
getExprText
(),
expected
[
9
]
)
self
.
assertEqual
(
guard
.
getExprText
(),
expected
[
10
]
)
def
test_from_old_dcworkflow_workflow_scripts
(
self
):
def
test_from_old_dcworkflow_workflow_scripts
(
self
):
...
...
Products/DCWorkflow/xml/wtcWorkflowExport.xml
View file @
ac25989c
...
@@ -83,6 +83,7 @@
...
@@ -83,6 +83,7 @@
category=
"CATEGORY"
category=
"CATEGORY"
tal:condition=
"transition/actbox_name"
tal:condition=
"transition/actbox_name"
tal:attributes=
"url transition/actbox_url;
tal:attributes=
"url transition/actbox_url;
icon transition/actbox_icon;
category transition/actbox_category;
category transition/actbox_category;
"
"
tal:content=
"transition/actbox_name"
>
ACTION NAME
</action>
tal:content=
"transition/actbox_name"
>
ACTION NAME
</action>
...
@@ -126,6 +127,7 @@
...
@@ -126,6 +127,7 @@
tal:condition=
"worklist/actbox_name"
tal:condition=
"worklist/actbox_name"
tal:attributes=
"url worklist/actbox_url;
tal:attributes=
"url worklist/actbox_url;
category worklist/actbox_category;
category worklist/actbox_category;
icon worklist/actbox_icon;
"
"
tal:content=
"worklist/actbox_name"
>
ACTION NAME
</action>
tal:content=
"worklist/actbox_name"
>
ACTION NAME
</action>
<guard
<guard
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment