external_workflow: list forms/cards only with triggers having identifiers (#42540)

This commit is contained in:
Serghei Mihai 2020-05-06 12:20:33 +02:00
parent fad27b06ac
commit 55c655bc35
2 changed files with 9 additions and 5 deletions

View File

@ -3543,7 +3543,6 @@ def test_workflows_global_actions_external_workflow_action(pub):
wf = Workflow(name='external')
action = wf.add_global_action('Global action')
trigger = action.append_trigger('webservice')
trigger.identifier = 'test'
item = action.append_item('remove')
wf.store()
@ -3572,6 +3571,12 @@ def test_workflows_global_actions_external_workflow_action(pub):
assert 'External workflow (not completed)' in resp.text
resp = app.get('/backoffice/workflows/%s/status/%s/items/1/' % (workflow.id, st.id))
assert "No workflow with external triggerable global action." in resp.text
trigger.identifier = 'test'
wf.store()
resp = app.get('/backoffice/workflows/%s/status/%s/items/1/' % (workflow.id, st.id))
resp = resp.forms[0].submit('submit')
assert "required field" in resp.text
resp.forms[0]['slug'] = 'formdef:%s' % formdef.url_name

View File

@ -43,7 +43,7 @@ class ExternalWorkflowGlobalAction(WorkflowStatusItem):
def get_workflow_webservice_triggers(self, workflow):
for action in workflow.global_actions or []:
for trigger in action.triggers or []:
if isinstance(trigger, WorkflowGlobalActionWebserviceTrigger):
if isinstance(trigger, WorkflowGlobalActionWebserviceTrigger) and trigger.identifier:
yield trigger
def get_object_def(self, object_slug=None):
@ -93,9 +93,8 @@ class ExternalWorkflowGlobalAction(WorkflowStatusItem):
object_def = self.get_object_def(form.get('%sslug' % prefix))
triggers_names = [(None, '---', '')]
for trigger in self.get_workflow_webservice_triggers(object_def.workflow):
if trigger.identifier:
trigger_id = 'action:%s' % trigger.identifier
triggers_names.append((trigger_id, trigger.parent.name, trigger_id))
trigger_id = 'action:%s' % trigger.identifier
triggers_names.append((trigger_id, trigger.parent.name, trigger_id))
form.add(SingleSelectWidget, '%strigger_id' % prefix,
title=_('Action'),
value=self.trigger_id,