workflow: display role name on graph and inspect page (#56228)
gitea-wip/wcs/pipeline/head Build started...
Details
gitea-wip/wcs/pipeline/head Build started...
Details
This commit is contained in:
parent
3b9f87fb89
commit
e71d636f31
|
@ -25,6 +25,7 @@ from wcs.wf.form import FormWorkflowStatusItem, WorkflowFormFieldsFormDef
|
|||
from wcs.wf.jump import JumpWorkflowStatusItem
|
||||
from wcs.wf.redirect_to_url import RedirectToUrlWorkflowStatusItem
|
||||
from wcs.wf.register_comment import RegisterCommenterWorkflowStatusItem
|
||||
from wcs.wf.roles import AddRoleWorkflowStatusItem, RemoveRoleWorkflowStatusItem
|
||||
from wcs.wf.wscall import WebserviceCallStatusItem
|
||||
from wcs.workflows import (
|
||||
ChoiceWorkflowStatusItem,
|
||||
|
@ -161,6 +162,48 @@ def test_workflows_svg(pub):
|
|||
assert '/static/css/dc2/admin.css' in resp.text
|
||||
|
||||
|
||||
def test_workflow_user_roles_svg(pub):
|
||||
create_superuser(pub)
|
||||
app = login(get_app(pub))
|
||||
|
||||
wf = Workflow(name='blah')
|
||||
st1 = wf.add_status('New')
|
||||
add_role = AddRoleWorkflowStatusItem()
|
||||
remove_role = RemoveRoleWorkflowStatusItem()
|
||||
st1.items.append(add_role)
|
||||
st1.items.append(remove_role)
|
||||
wf.store()
|
||||
|
||||
resp = app.get('/backoffice/workflows/%s/svg' % wf.id)
|
||||
assert 'Role Addition (not' in resp
|
||||
assert 'Role Removal (not' in resp
|
||||
assert resp.text.count('configured)') == 2
|
||||
|
||||
add_role.role_id = 'foobar'
|
||||
remove_role.role_id = 'barfoo'
|
||||
wf.store()
|
||||
|
||||
resp = app.get('/backoffice/workflows/%s/svg' % wf.id)
|
||||
assert 'Role Addition' in resp
|
||||
assert '(unknown - foobar)' in resp
|
||||
assert 'Role Removal' in resp
|
||||
assert '(unknown - barfoo)' in resp
|
||||
|
||||
role_a = pub.role_class(name='role A')
|
||||
role_a.store()
|
||||
role_b = pub.role_class(name='role B')
|
||||
role_b.store()
|
||||
add_role.role_id = role_a.id
|
||||
remove_role.role_id = role_b.id
|
||||
wf.store()
|
||||
|
||||
resp = app.get('/backoffice/workflows/%s/svg' % wf.id)
|
||||
assert 'Role Addition (role' in resp
|
||||
assert 'A)' in resp
|
||||
assert 'Role Removal (role' in resp
|
||||
assert 'B)' in resp
|
||||
|
||||
|
||||
def test_workflows_edit(pub):
|
||||
Workflow.wipe()
|
||||
workflow = Workflow(name='foo')
|
||||
|
|
|
@ -11,6 +11,7 @@ from wcs.wf.backoffice_fields import SetBackofficeFieldsWorkflowStatusItem
|
|||
from wcs.wf.create_formdata import CreateFormdataWorkflowStatusItem, Mapping
|
||||
from wcs.wf.export_to_model import ExportToModel
|
||||
from wcs.wf.jump import JumpWorkflowStatusItem
|
||||
from wcs.wf.roles import AddRoleWorkflowStatusItem, RemoveRoleWorkflowStatusItem
|
||||
from wcs.workflows import Workflow, WorkflowBackofficeFieldsFormDef
|
||||
|
||||
from ..utilities import clean_temporary_pub, create_temporary_pub, get_app, login
|
||||
|
@ -139,3 +140,39 @@ def test_workflow_inspect_page(pub):
|
|||
'<li><span class="parameter">Model:</span> '
|
||||
'<a href="status/st3/items/_export_to/?file=model_file">test.rtf</a></li>'
|
||||
) in resp.text
|
||||
|
||||
|
||||
def test_workflow_user_roles_inspect_page(pub):
|
||||
create_superuser(pub)
|
||||
app = login(get_app(pub))
|
||||
|
||||
wf = Workflow(name='blah')
|
||||
st1 = wf.add_status('New')
|
||||
add_role = AddRoleWorkflowStatusItem()
|
||||
remove_role = RemoveRoleWorkflowStatusItem()
|
||||
st1.items.append(add_role)
|
||||
st1.items.append(remove_role)
|
||||
wf.store()
|
||||
|
||||
resp = app.get('/backoffice/workflows/%s/inspect' % wf.id)
|
||||
assert '<li><span class="parameter">Role:</span>' not in resp
|
||||
|
||||
add_role.role_id = 'foobar'
|
||||
remove_role.role_id = 'barfoo'
|
||||
wf.store()
|
||||
|
||||
resp = app.get('/backoffice/workflows/%s/inspect' % wf.id)
|
||||
assert '<li><span class="parameter">Role to Add:</span> unknown - foobar' in resp
|
||||
assert '<li><span class="parameter">Role to Remove:</span> unknown - barfoo' in resp
|
||||
|
||||
role_a = pub.role_class(name='role A')
|
||||
role_a.store()
|
||||
role_b = pub.role_class(name='role B')
|
||||
role_b.store()
|
||||
add_role.role_id = role_a.id
|
||||
remove_role.role_id = role_b.id
|
||||
wf.store()
|
||||
|
||||
resp = app.get('/backoffice/workflows/%s/inspect' % wf.id)
|
||||
assert '<li><span class="parameter">Role to Add:</span> role A' in resp
|
||||
assert '<li><span class="parameter">Role to Remove:</span> role B' in resp
|
||||
|
|
|
@ -45,7 +45,20 @@ def sign_ws_url(url):
|
|||
return sign_url(url, secret)
|
||||
|
||||
|
||||
class AddRoleWorkflowStatusItem(WorkflowStatusItem):
|
||||
class RoleMixin:
|
||||
def get_role_id_parameter_view_value(self):
|
||||
return self.get_line_details()
|
||||
|
||||
def get_line_details(self):
|
||||
if not self.role_id:
|
||||
return _('not configured')
|
||||
role = get_publisher().role_class.get(self.role_id, ignore_errors=True)
|
||||
if role is not None:
|
||||
return role.name
|
||||
return _('unknown - %s') % self.role_id
|
||||
|
||||
|
||||
class AddRoleWorkflowStatusItem(RoleMixin, WorkflowStatusItem):
|
||||
description = _('Role Addition')
|
||||
key = 'add_role'
|
||||
category = 'user-action'
|
||||
|
@ -123,7 +136,7 @@ class AddRoleWorkflowStatusItem(WorkflowStatusItem):
|
|||
register_item_class(AddRoleWorkflowStatusItem)
|
||||
|
||||
|
||||
class RemoveRoleWorkflowStatusItem(WorkflowStatusItem):
|
||||
class RemoveRoleWorkflowStatusItem(RoleMixin, WorkflowStatusItem):
|
||||
description = _('Role Removal')
|
||||
key = 'remove_role'
|
||||
category = 'user-action'
|
||||
|
|
Loading…
Reference in New Issue