0001-workflow-display-role-details-on-inspect-page-48829.patch
tests/admin_pages/test_workflow.py | ||
---|---|---|
16 | 16 |
from wcs.workflows import ( |
17 | 17 |
Workflow, WorkflowCriticalityLevel, DisplayMessageWorkflowStatusItem, |
18 | 18 |
WorkflowBackofficeFieldsFormDef, CommentableWorkflowStatusItem) |
19 |
from wcs.wf.dispatch import DispatchWorkflowStatusItem |
|
19 | 20 |
from wcs.wf.export_to_model import ExportToModel |
20 | 21 |
from wcs.wf.jump import JumpWorkflowStatusItem |
21 | 22 |
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem |
... | ... | |
1708 | 1709 |
wscall.parent = baz_status |
1709 | 1710 |
baz_status.items.append(wscall) |
1710 | 1711 | |
1712 |
dispatch1 = DispatchWorkflowStatusItem() |
|
1713 |
dispatch1.dispatch_type = 'automatic' |
|
1714 |
dispatch1.rules = [ |
|
1715 |
{'role_id': role.id, 'value': 'foo'}, |
|
1716 |
] |
|
1717 |
baz_status.items.append(dispatch1) |
|
1718 |
dispatch2 = DispatchWorkflowStatusItem() |
|
1719 |
dispatch2.dispatch_type = 'manual' |
|
1720 |
dispatch2.role_key = '_receiver' |
|
1721 |
dispatch2.role_id = role.id |
|
1722 |
baz_status.items.append(dispatch2) |
|
1723 | ||
1711 | 1724 |
baz_status.backoffice_info_text = '<p>Hello</p>' |
1712 | 1725 | |
1713 | 1726 |
display_form = FormWorkflowStatusItem() |
... | ... | |
1748 | 1761 |
workflow.store() |
1749 | 1762 | |
1750 | 1763 |
app = login(get_app(pub)) |
1751 |
app.get('/backoffice/workflows/%s/inspect' % workflow.id) |
|
1764 |
resp = app.get('/backoffice/workflows/%s/inspect' % workflow.id) |
|
1765 |
assert ( |
|
1766 |
'<li><span class="parameter">Dispatch Type:</span> Multiple</li>' |
|
1767 |
'<li><span class="parameter">Rules:</span> ' |
|
1768 |
'<ul class="rules"><li>foo → foobar</li></ul>' |
|
1769 |
'</li>') in resp.text |
|
1770 |
assert ( |
|
1771 |
'<li><span class="parameter">Dispatch Type:</span> Simple</li>' |
|
1772 |
'<li><span class="parameter">Role:</span> foobar</li>') in resp.text |
|
1752 | 1773 | |
1753 | 1774 | |
1754 | 1775 |
def test_workflows_unused(pub): |
wcs/wf/dispatch.py | ||
---|---|---|
17 | 17 |
import collections |
18 | 18 |
import xml.etree.ElementTree as ET |
19 | 19 | |
20 |
from quixote.html import htmltext |
|
21 | ||
20 | 22 |
from ..qommon import _, N_ |
21 | 23 |
from ..qommon.form import * |
22 | 24 |
from ..qommon.template import Template |
23 | 25 |
from ..qommon import get_logger |
24 | 26 |
from wcs.roles import Role, get_user_roles |
25 |
from wcs.workflows import XmlSerialisable, WorkflowStatusItem, register_item_class |
|
27 |
from wcs.workflows import XmlSerialisable, WorkflowStatusItem, register_item_class, get_role_name
|
|
26 | 28 | |
27 | 29 | |
28 | 30 |
class AutomaticDispatchRowWidget(CompositeWidget): |
... | ... | |
177 | 179 |
} |
178 | 180 |
) |
179 | 181 | |
182 |
def get_role_id_parameter_view_value(self): |
|
183 |
return get_role_name(self.role_id) |
|
184 | ||
185 |
def get_rules_parameter_view_value(self): |
|
186 |
result = [] |
|
187 |
for rule in self.rules or []: |
|
188 |
result.append(htmltext('<li>%s → %s</li>') % (rule.get('value'), get_role_name(rule.get('role_id')))) |
|
189 |
return htmltext('<ul class="rules">%s</ul>') % htmltext('').join(result) |
|
190 | ||
180 | 191 |
def perform(self, formdata): |
181 | 192 |
if not formdata.workflow_roles: |
182 | 193 |
formdata.workflow_roles = {} |
wcs/workflows.py | ||
---|---|---|
961 | 961 |
if role_id is None: |
962 | 962 |
continue |
963 | 963 |
role_id = str(role_id) |
964 |
if role_id.startswith('_') or role_id == 'logged-users': |
|
965 |
role = force_text(role_id, charset) |
|
966 |
else: |
|
967 |
try: |
|
968 |
role = force_text(Role.get(role_id).name, charset) |
|
969 |
except KeyError: |
|
970 |
role = force_text(role_id, charset) |
|
964 |
role = get_role_name(role_id, charset) |
|
971 | 965 |
sub = ET.SubElement(el, 'item') |
972 | 966 |
sub.attrib['role_id'] = role_id |
973 | 967 |
sub.text = role |
... | ... | |
986 | 980 |
if not hasattr(self, attribute) or not getattr(self, attribute): |
987 | 981 |
return |
988 | 982 |
role_id = str(getattr(self, attribute)) |
989 |
if role_id.startswith('_') or role_id == 'logged-users': |
|
990 |
role = force_text(role_id, charset) |
|
991 |
else: |
|
992 |
try: |
|
993 |
role = force_text(Role.get(role_id).name, charset) |
|
994 |
except KeyError: |
|
995 |
role_id = role = force_text(role_id, charset) |
|
983 |
role = get_role_name(role_id, charset) |
|
996 | 984 |
sub = ET.SubElement(item, attribute) |
997 | 985 |
if include_id: |
998 | 986 |
sub.attrib['role_id'] = role_id |
... | ... | |
2289 | 2277 |
return |
2290 | 2278 | |
2291 | 2279 | |
2280 |
def get_role_name(role_id, charset=None): |
|
2281 |
role_id = str(role_id) |
|
2282 |
if role_id.startswith('_') or role_id == 'logged-users': |
|
2283 |
return force_text(role_id, charset) |
|
2284 |
try: |
|
2285 |
return force_text(Role.get(role_id).name, charset) |
|
2286 |
except KeyError: |
|
2287 |
return force_text(role_id, charset) |
|
2288 | ||
2289 | ||
2292 | 2290 |
def render_list_of_roles(workflow, roles): |
2293 | 2291 |
t = [] |
2294 | 2292 |
for r in roles: |
2295 |
- |