6267 |
6267 |
perform_items([delete_action], formdata)
|
6268 |
6268 |
|
6269 |
6269 |
|
|
6270 |
def test_call_external_workflow_with_items_data_sourced_object(two_pubs, admin_user):
|
|
6271 |
FormDef.wipe()
|
|
6272 |
CardDef.wipe()
|
|
6273 |
|
|
6274 |
carddef_wf = Workflow(name='Carddef Workflow')
|
|
6275 |
carddef_wf.add_status('status')
|
|
6276 |
carddef_wf.backoffice_fields_formdef = WorkflowBackofficeFieldsFormDef(carddef_wf)
|
|
6277 |
carddef_wf.backoffice_fields_formdef.fields = [
|
|
6278 |
StringField(id='bo0', varname='bo', type='string', label='bo variable'),
|
|
6279 |
]
|
|
6280 |
update_action = carddef_wf.add_global_action('Update', 'ac1')
|
|
6281 |
update_action.add_action('set-backoffice-fields')
|
|
6282 |
setbo = update_action.items[0]
|
|
6283 |
setbo.fields = [{'field_id': 'bo0', 'value': '{{ form_var_bo|default:"0"|add:1 }}'}]
|
|
6284 |
trigger = update_action.append_trigger('webservice')
|
|
6285 |
trigger.identifier = 'update'
|
|
6286 |
carddef_wf.store()
|
|
6287 |
|
|
6288 |
carddef = CardDef()
|
|
6289 |
carddef.name = 'Data'
|
|
6290 |
carddef.fields = [
|
|
6291 |
StringField(id='0', label='string', varname='card_string'),
|
|
6292 |
]
|
|
6293 |
carddef.digest_templates = {'default': '{{ form_var_card_string }}'}
|
|
6294 |
carddef.workflow = carddef_wf
|
|
6295 |
carddef.store()
|
|
6296 |
|
|
6297 |
carddata = carddef.data_class()()
|
|
6298 |
carddata.data = {'0': 'Text1'}
|
|
6299 |
carddata.just_created()
|
|
6300 |
carddata.store()
|
|
6301 |
|
|
6302 |
carddata2 = carddef.data_class()()
|
|
6303 |
carddata2.data = {'0': 'Text2'}
|
|
6304 |
carddata2.just_created()
|
|
6305 |
carddata2.store()
|
|
6306 |
|
|
6307 |
carddata3 = carddef.data_class()()
|
|
6308 |
carddata3.data = {'0': 'Text3'}
|
|
6309 |
carddata3.just_created()
|
|
6310 |
carddata3.store()
|
|
6311 |
|
|
6312 |
wf = Workflow(name='External actions')
|
|
6313 |
wf.add_status('Action')
|
|
6314 |
|
|
6315 |
update_global_action = wf.add_global_action('Update linked object data')
|
|
6316 |
update_action = update_global_action.add_action('external_workflow_global_action')
|
|
6317 |
update_action.slug = 'carddef:%s' % carddef.url_name
|
|
6318 |
update_action.trigger_id = 'action:update'
|
|
6319 |
|
|
6320 |
wf.store()
|
|
6321 |
|
|
6322 |
datasource = {'type': 'carddef:%s' % carddef.url_name}
|
|
6323 |
formdef = FormDef()
|
|
6324 |
formdef.name = 'External action form'
|
|
6325 |
formdef.fields = [
|
|
6326 |
ItemsField(id='0', label='Cards', type='items', varname='cards', data_source=datasource),
|
|
6327 |
EmailField(id='1', label='Email', varname='email'),
|
|
6328 |
]
|
|
6329 |
formdef.workflow = wf
|
|
6330 |
formdef.store()
|
|
6331 |
|
|
6332 |
assert carddef.data_class().count() == 3
|
|
6333 |
|
|
6334 |
formdata = formdef.data_class()()
|
|
6335 |
formdata.data = {'0': [str(carddata.id), str(carddata3.id)], '1': 'foo@example.com'}
|
|
6336 |
formdata.data['0_display'] = formdef.fields[0].store_display_value(formdata.data, '1')
|
|
6337 |
formdata.data['0_structured'] = formdef.fields[0].store_structured_value(formdata.data, '1')
|
|
6338 |
formdata.store()
|
|
6339 |
formdata.just_created()
|
|
6340 |
formdata.perform_workflow()
|
|
6341 |
|
|
6342 |
perform_items([update_action], formdata)
|
|
6343 |
assert carddef.data_class().count() == 3
|
|
6344 |
carddata.refresh_from_storage()
|
|
6345 |
assert carddata.data['bo0'] == '1'
|
|
6346 |
carddata2.refresh_from_storage()
|
|
6347 |
assert not carddata2.data.get('bo0')
|
|
6348 |
carddata3.refresh_from_storage()
|
|
6349 |
assert carddata3.data['bo0'] == '1'
|
|
6350 |
|
|
6351 |
perform_items([update_action], formdata)
|
|
6352 |
carddata.refresh_from_storage()
|
|
6353 |
assert carddata.data['bo0'] == '2'
|
|
6354 |
carddata2.refresh_from_storage()
|
|
6355 |
assert not carddata2.data.get('bo0')
|
|
6356 |
carddata3.refresh_from_storage()
|
|
6357 |
assert carddata3.data['bo0'] == '2'
|
|
6358 |
|
|
6359 |
|
6270 |
6360 |
def test_call_external_workflow_with_parent_object(pub):
|
6271 |
6361 |
FormDef.wipe()
|
6272 |
6362 |
CardDef.wipe()
|