wf/external_workflow: select specific formdef/cardef in evolution parts (#45659)
This commit is contained in:
parent
337cf7f8c8
commit
d2526a9dad
|
@ -4878,17 +4878,41 @@ def test_call_external_workflow_with_evolution_linked_object(pub):
|
|||
assert external_formdef.data_class().count() == 1
|
||||
assert external_carddef.data_class().count() == 1
|
||||
external_formdata = external_formdef.data_class().select()[0]
|
||||
|
||||
# remove external formdata
|
||||
perform_items([action], formdata)
|
||||
assert LoggedError.count() == 0
|
||||
assert external_formdef.data_class().count() == 0
|
||||
assert external_carddef.data_class().count() == 1
|
||||
|
||||
# formdata is already deleted: cannot find it again
|
||||
perform_items([action], formdata)
|
||||
assert LoggedError.count() == 1
|
||||
logged_error = LoggedError.select()[0]
|
||||
assert logged_error.summary == 'Could not find linked "External Form" object by id %s' % external_formdata.id
|
||||
assert logged_error.exception_class == 'KeyError'
|
||||
|
||||
# try remove an unexisting carddef: do nothing
|
||||
unused_carddef = CardDef()
|
||||
unused_carddef.name = 'External Card (not used)'
|
||||
unused_carddef.fields = []
|
||||
unused_carddef.workflow = external_wf
|
||||
unused_carddef.store()
|
||||
LoggedError.wipe()
|
||||
action.slug = 'carddef:%s' % unused_carddef.url_name
|
||||
wf.store()
|
||||
perform_items([action], formdata)
|
||||
assert LoggedError.count() == 0
|
||||
assert external_formdef.data_class().count() == 0
|
||||
assert external_carddef.data_class().count() == 1
|
||||
# remove the right carddef
|
||||
action.slug = 'carddef:%s' % external_carddef.url_name
|
||||
wf.store()
|
||||
perform_items([action], formdata)
|
||||
assert LoggedError.count() == 0
|
||||
assert external_formdef.data_class().count() == 0
|
||||
assert external_carddef.data_class().count() == 0
|
||||
|
||||
|
||||
def test_call_external_workflow_with_data_sourced_object(pub):
|
||||
FormDef.wipe()
|
||||
|
|
|
@ -132,7 +132,9 @@ class ExternalWorkflowGlobalAction(WorkflowStatusItem):
|
|||
|
||||
# search in evolution
|
||||
for part in formdata.iter_evolution_parts():
|
||||
if isinstance(part, LinkedFormdataEvolutionPart) and part.formdef_class == objectdef.__class__:
|
||||
if isinstance(part, LinkedFormdataEvolutionPart):
|
||||
part_identifier = '%s:%s' % (part.formdef.xml_root_node, part.formdef.url_name)
|
||||
if part_identifier == self.slug:
|
||||
data_ids.append(part.formdata_id)
|
||||
|
||||
for target_id in data_ids:
|
||||
|
|
Loading…
Reference in New Issue