Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
erp5
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Labels
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Commits
Open sidebar
Romain Courteaud
erp5
Commits
0e2ed43f
Commit
0e2ed43f
authored
May 11, 2018
by
Tomáš Peterka
Committed by
Tomáš Peterka
May 15, 2018
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
[erp5_core] Update code of Mass Workflow Transition for performance
parent
7cccbe9d
Changes
7
Show whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
48 additions
and
19 deletions
+48
-19
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_getFormIdForWorkflowAction.py
...portal_skins/erp5_core/Base_getFormIdForWorkflowAction.py
+11
-6
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_getFormIdForWorkflowAction.xml
...ortal_skins/erp5_core/Base_getFormIdForWorkflowAction.xml
+1
-1
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_getListbox.py
...kinTemplateItem/portal_skins/erp5_core/Base_getListbox.py
+6
-1
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_searchUsingListbox.py
...ateItem/portal_skins/erp5_core/Base_searchUsingListbox.py
+8
-8
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_searchUsingListbox.xml
...teItem/portal_skins/erp5_core/Base_searchUsingListbox.xml
+1
-1
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Folder_modifyDocumentListStatus.py
...portal_skins/erp5_core/Folder_modifyDocumentListStatus.py
+20
-1
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Folder_modifyDocumentListStatus.xml
...ortal_skins/erp5_core/Folder_modifyDocumentListStatus.xml
+1
-1
No files found.
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_getFormIdForWorkflowAction.py
View file @
0e2ed43f
...
...
@@ -20,17 +20,22 @@ Format of Action returned by getFilteredActions['workflow'] = [{
action_tool
=
context
.
getPortalObject
().
portal_actions
id_form_dict
=
dict
()
for
result
in
context
.
Base_searchUsingFormIdAndQuery
(
form_id
,
query
):
result_list
=
()
if
uids
is
not
None
:
result_list
=
context
.
getPortalObject
().
portal_catalog
(
uid
=
uids
)
else
:
result_list
=
context
.
Base_searchUsingFormIdAndQuery
(
form_id
,
query
)
for
result
in
result_list
:
for
action
in
action_tool
.
listFilteredActionsFor
(
result
.
getObject
()).
get
(
'workflow'
,
[]):
id_form_dict
[
action
[
'id'
]]
=
action
[
'url'
].
rsplit
(
'/'
,
1
)[
1
].
split
(
'?'
)[
0
]
action_form_id
=
action
[
'url'
].
rsplit
(
'/'
,
1
)[
1
].
split
(
'?'
)[
0
]
id_form_dict
[
action
[
'id'
]]
=
action_form_id
if
workflow_action
==
action
[
'id'
]:
return
action_form_id
# early return for performance reasons
if
not
workflow_action
and
len
(
id_form_dict
)
==
1
:
# if we have only one possible workflow transition we suppose it is the default one
return
id_form_dict
.
items
()[
0
][
1
]
if
workflow_action
in
id_form_dict
:
# if the workflow_action is done and we found it then return related form dialog
return
id_form_dict
[
workflow_action
]
# if we have no idea what workflow form we should use - just use ~~the default one~~ nothing
return
""
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_getFormIdForWorkflowAction.xml
View file @
0e2ed43f
...
...
@@ -50,7 +50,7 @@
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
form_id, query
, workflow_action=\'\'
</string>
</value>
<value>
<string>
form_id, query
=\'\', workflow_action=\'\', uids=None
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_getListbox.py
View file @
0e2ed43f
...
...
@@ -6,6 +6,7 @@ This script should be used to detect a listbox without having to name it "listbo
Christophe Dumez <christophe@nexedi.com>
"""
from
Products.ERP5Type.Log
import
log
,
ERROR
def
isListBox
(
field
):
if
field
.
meta_type
==
"ListBox"
:
...
...
@@ -19,7 +20,11 @@ def isListBox(field):
if
form_or_id
is
None
:
form
=
context
elif
isinstance
(
form_or_id
,
str
):
try
:
form
=
getattr
(
context
,
form_or_id
)
except
AttributeError
:
log
(
"Form '{}' does not exist!"
,
level
=
ERROR
)
return
None
else
:
form
=
form_or_id
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_searchUsingListbox.py
View file @
0e2ed43f
...
...
@@ -8,18 +8,18 @@ Returns an iterable (most likely SearchResult instance depending on list_method
list_method_kwargs
=
dict
(
listbox
.
get_value
(
'default_params'
))
or
{}
# Listbox contraints portal types
portal_types
=
listbox
.
get_value
(
'portal_types'
)
if
portal_types
:
if
portal_types
is
not
None
:
list_method_kwargs
.
update
(
portal_types
=
portal_types
)
else
:
if
"portal_type"
in
list_method_kwargs
:
if
isinstance
(
list_method_kwargs
[
'portal_type'
],
(
str
,
unicode
)
):
if
isinstance
(
list_method_kwargs
[
'portal_type'
],
str
):
list_method_kwargs
[
'portal_type'
]
=
[
list_method_kwargs
[
'portal_type'
],
]
else
:
list_method_kwargs
[
'portal_type'
]
=
[]
list_method_kwargs
[
'portal_type'
].
extend
(
portal_type_name
for
portal_type_name
,
_
in
portal_types
)
elif
listbox
.
get_value
(
"portal_types"
):
list_method_kwargs
[
'portal_type'
]
=
[
portal_type_name
for
portal_type_name
,
_
in
listbox
.
get_value
(
"portal_types"
)]
# query is provided by the caller because it is a runtime information
if
query
:
list_method_kwargs
.
update
(
full_text
=
query
)
# second overwrite the query
if
query
or
full_text
:
list_method_kwargs
.
update
(
full_text
=
query
or
full_text
)
# second overwrite the query
if
limit
:
list_method_kwargs
.
update
(
limit
=
limit
)
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Base_searchUsingListbox.xml
View file @
0e2ed43f
...
...
@@ -50,7 +50,7 @@
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
listbox, query=\'\',
sort_on=(), limit=None
</string>
</value>
<value>
<string>
listbox, query=\'\',
full_text=\'\', sort_on=(), limit=None, portal_types=None, **kwargs
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Folder_modifyDocumentListStatus.py
View file @
0e2ed43f
...
...
@@ -9,6 +9,8 @@ This script is intended as a dialog target.
"""
from
Products.CMFCore.WorkflowCore
import
WorkflowException
MARKER
=
[]
portal
=
context
.
getPortalObject
()
request
=
kwargs
.
get
(
"REQUEST"
,
None
)
or
context
.
REQUEST
translate
=
portal
.
Base_translateString
...
...
@@ -27,7 +29,24 @@ if not workflow_action:
# and we diallow submit if different action is selected and different dialog embedded
request
.
form
[
'workflow_action_rendered'
]
=
workflow_action
if
is_updating
or
workflow_action_rendered
!=
workflow_action
:
if
kwargs
.
get
(
"update_method"
,
""
):
return
context
.
Base_renderForm
(
dialog_id
,
message
=
translate
(
"Form updated."
),
level
=
"warning"
,
REQUEST
=
request
)
if
workflow_action_rendered
!=
workflow_action
:
# if we get all fields for the workflow form - do not bother user and proceed
try
:
workflow_form_name
=
context
.
Base_getFormIdForWorkflowAction
(
form_id
,
''
,
workflow_action
,
uids
=
uids
)
workflow_form
=
getattr
(
context
,
workflow_form_name
)
# this can throw if form is not defined yet
for
group
in
workflow_form
.
get_groups
():
if
group
.
lower
()
==
'hidden'
:
continue
for
field
in
workflow_form
.
get_fields_in_group
(
group
):
if
request
.
form
.
get
(
"field_workflow_dialog_"
+
field
.
id
,
MARKER
)
is
MARKER
:
raise
AttributeError
(
"field_workflow_dialog_"
+
field
.
id
)
# direct access request.form["key"] does not throw because publisher eats the exception
except
AttributeError
:
return
context
.
Base_renderForm
(
dialog_id
,
message
=
translate
(
"Form updated."
),
level
=
"warning"
,
...
...
product/ERP5/bootstrap/erp5_core/SkinTemplateItem/portal_skins/erp5_core/Folder_modifyDocumentListStatus.xml
View file @
0e2ed43f
...
...
@@ -50,7 +50,7 @@
</item>
<item>
<key>
<string>
_params
</string>
</key>
<value>
<string>
form_id, dialog_id, uids, workflow_action, workflow_action_rendered, comment=\'\',
is_updating=False,
**kwargs
</string>
</value>
<value>
<string>
form_id, dialog_id, uids, workflow_action, workflow_action_rendered, comment=\'\', **kwargs
</string>
</value>
</item>
<item>
<key>
<string>
id
</string>
</key>
...
...
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