workflows: display trigger statuses in summary line (#75056) #183

Merged
fpeters merged 1 commits from wip/75056-global-action-display-statuses into main 2023-03-24 09:11:32 +01:00
3 changed files with 20 additions and 4 deletions

View File

@ -2311,6 +2311,8 @@ def test_workflows_global_actions_edit(pub):
Workflow.wipe()
workflow = Workflow(name='foo')
st1 = workflow.add_status('Status1')
workflow.add_status('Status2')
workflow.store()
app = login(get_app(pub))
@ -2337,14 +2339,22 @@ def test_workflows_global_actions_edit(pub):
# test modifying a trigger
resp = app.get('/backoffice/workflows/%s/' % workflow.id)
resp = resp.click('Global Action')
assert resp.pyquery('#triggers-list li > a').text() == 'Manual, not assigned'
assert len(Workflow.get(workflow.id).global_actions[0].triggers) == 1
resp = resp.click(
href='triggers/%s/' % Workflow.get(workflow.id).global_actions[0].triggers[0].id, index=0
)
assert resp.form['roles$element0'].value == 'None'
resp.form['roles$element0'].value = '_receiver'
resp = resp.form.submit('submit')
resp = resp.form.submit('submit').follow()
assert resp.pyquery('#triggers-list li > a').text() == 'Manual, by Recipient'
assert Workflow.get(workflow.id).global_actions[0].triggers[0].roles == ['_receiver']
# limit to some statuses
resp = resp.click(href=resp.pyquery('#triggers-list li > a').attr.href, index=0)
resp.form['statuses$element0'].value = st1.id
resp = resp.form.submit('submit').follow()
assert Workflow.get(workflow.id).global_actions[0].triggers[0].statuses == [st1.id]
assert resp.pyquery('#triggers-list li > a').text() == 'Manual, from status "Status1", by Recipient'
resp = app.get('/backoffice/workflows/%s/' % workflow.id)
resp = resp.click('Global Action')

View File

@ -1421,7 +1421,7 @@ class GlobalActionPage(WorkflowStatusPage):
r += htmltext('<div class="bo-block">')
r += htmltext('<h2>%s</h2>') % _('Triggers')
r += (
htmltext('<ul id="items-list" class="biglist %s" data-order-function="update_triggers_order">')
htmltext('<ul id="triggers-list" class="biglist %s" data-order-function="update_triggers_order">')
% sortable
)
for trigger in self.action.triggers:

View File

@ -1491,10 +1491,16 @@ class WorkflowGlobalActionManualTrigger(WorkflowGlobalActionTrigger):
return ('roles', 'statuses')
def render_as_line(self):
parts = [_('Manual')]
if self.statuses:
labels = [x.name for x in self.parent.parent.possible_status if x.id in self.statuses]
if labels:
parts.append(_('from status %s') % _(' or ').join([_('"%s"') % x for x in labels]))
if self.roles:
return _('Manual by %s') % render_list_of_roles(self.parent.parent, self.roles)
parts.append(_('by %s') % render_list_of_roles(self.parent.parent, self.roles))
else:
return _('Manual (not assigned)')
parts.append(_('not assigned'))
return ', '.join([str(x) for x in parts])
def form(self, workflow):
form = Form(enctype='multipart/form-data')