external_workflow: feed target data to substitutions context (#42652)
This commit is contained in:
parent
053827b19b
commit
8ef0f08163
|
@ -4818,10 +4818,21 @@ def test_call_external_workflow_with_data_sourced_object(pub):
|
|||
LoggedError.wipe()
|
||||
|
||||
carddef_wf = Workflow(name='Carddef Workflow')
|
||||
st1 = carddef_wf.add_status(name='New')
|
||||
action = carddef_wf.add_global_action('Delete', 'delete')
|
||||
action.append_item('remove')
|
||||
trigger = action.append_trigger('webservice')
|
||||
carddef_wf.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(carddef_wf)
|
||||
carddef_wf.backoffice_fields_formdef.fields = [
|
||||
StringField(id='bo0', varname='bo', type='string', label='bo variable'),
|
||||
]
|
||||
update_action = carddef_wf.add_global_action('Update')
|
||||
update_action.append_item('set-backoffice-fields')
|
||||
setbo = update_action.items[0]
|
||||
setbo.fields = [{'field_id': 'bo0',
|
||||
'value': '{{ form_var_bo|default:"0"|add:1 }}'}]
|
||||
trigger = update_action.append_trigger('webservice')
|
||||
trigger.identifier = 'update'
|
||||
|
||||
delete = carddef_wf.add_global_action('Delete', 'delete')
|
||||
delete.append_item('remove')
|
||||
trigger = delete.append_trigger('webservice')
|
||||
trigger.identifier = 'delete'
|
||||
carddef_wf.store()
|
||||
|
||||
|
@ -4841,10 +4852,15 @@ def test_call_external_workflow_with_data_sourced_object(pub):
|
|||
wf = Workflow(name='External actions')
|
||||
st1 = wf.add_status('Action')
|
||||
|
||||
global_action = wf.add_global_action('Delete external linked object', 'delete')
|
||||
action = global_action.append_item('external_workflow_global_action')
|
||||
action.slug = 'carddef:%s' % carddef.url_name
|
||||
action.trigger_id = 'action:%s' % trigger.identifier
|
||||
update_global_action = wf.add_global_action('Update linked object data')
|
||||
update_action = update_global_action.append_item('external_workflow_global_action')
|
||||
update_action.slug = 'carddef:%s' % carddef.url_name
|
||||
update_action.trigger_id = 'action:update'
|
||||
|
||||
delete_global_action = wf.add_global_action('Delete external linked object', 'delete')
|
||||
delete_action = delete_global_action.append_item('external_workflow_global_action')
|
||||
delete_action.slug = 'carddef:%s' % carddef.url_name
|
||||
delete_action.trigger_id = 'action:delete'
|
||||
wf.store()
|
||||
|
||||
datasource = {'type': 'carddef:%s' % carddef.url_name}
|
||||
|
@ -4869,11 +4885,21 @@ def test_call_external_workflow_with_data_sourced_object(pub):
|
|||
formdata.just_created()
|
||||
formdata.perform_workflow()
|
||||
|
||||
perform_items([action], formdata)
|
||||
perform_items([update_action], formdata)
|
||||
assert LoggedError.count() == 0
|
||||
assert carddef.data_class().count() == 1
|
||||
data = carddef.data_class().select()[0]
|
||||
assert data.data['bo0'] == '1'
|
||||
|
||||
perform_items([update_action], formdata)
|
||||
data = carddef.data_class().select()[0]
|
||||
assert data.data['bo0'] == '2'
|
||||
|
||||
perform_items([delete_action], formdata)
|
||||
assert LoggedError.count() == 0
|
||||
assert carddef.data_class().count() == 0
|
||||
|
||||
perform_items([action], formdata)
|
||||
perform_items([delete_action], formdata)
|
||||
assert LoggedError.count() == 1
|
||||
logged_error = LoggedError.select()[0]
|
||||
assert logged_error.summary == 'Could not find linked "Data" object by id %s' % carddata.id
|
||||
|
|
|
@ -146,7 +146,12 @@ class ExternalWorkflowGlobalAction(WorkflowStatusItem):
|
|||
return
|
||||
|
||||
for target_data in self.iter_target_datas(formdata, objectdef):
|
||||
perform_items(trigger.parent.items, target_data)
|
||||
with get_publisher().substitutions.temporary_feed(target_data):
|
||||
get_publisher().substitutions.reset()
|
||||
get_publisher().substitutions.feed(get_publisher())
|
||||
get_publisher().substitutions.feed(target_data.formdef)
|
||||
get_publisher().substitutions.feed(target_data)
|
||||
perform_items(trigger.parent.items, target_data)
|
||||
|
||||
|
||||
register_item_class(ExternalWorkflowGlobalAction)
|
||||
|
|
Loading…
Reference in New Issue