Projet

Général

Profil

0001-wf-external_workflow-select-specific-formdef-cardef-.patch

Thomas Noël, 31 juillet 2020 14:48

Télécharger (3,06 ko)

Voir les différences:

Subject: [PATCH] wf/external_workflow: select specific formdef/cardef in
 evolution parts (#45659)

 tests/test_workflows.py     | 24 ++++++++++++++++++++++++
 wcs/wf/external_workflow.py |  6 ++++--
 2 files changed, 28 insertions(+), 2 deletions(-)
tests/test_workflows.py
4878 4878
    assert external_formdef.data_class().count() == 1
4879 4879
    assert external_carddef.data_class().count() == 1
4880 4880
    external_formdata = external_formdef.data_class().select()[0]
4881

  
4882
    # remove external formdata
4881 4883
    perform_items([action], formdata)
4882 4884
    assert LoggedError.count() == 0
4883 4885
    assert external_formdef.data_class().count() == 0
4884 4886
    assert external_carddef.data_class().count() == 1
4885 4887

  
4888
    # formdata is already deleted: cannot find it again
4886 4889
    perform_items([action], formdata)
4887 4890
    assert LoggedError.count() == 1
4888 4891
    logged_error = LoggedError.select()[0]
4889 4892
    assert logged_error.summary == 'Could not find linked "External Form" object by id %s' % external_formdata.id
4890 4893
    assert logged_error.exception_class == 'KeyError'
4891 4894

  
4895
    # try remove an unexisting carddef: do nothing
4896
    unused_carddef = CardDef()
4897
    unused_carddef.name = 'External Card (not used)'
4898
    unused_carddef.fields = []
4899
    unused_carddef.workflow = external_wf
4900
    unused_carddef.store()
4901
    LoggedError.wipe()
4902
    action.slug = 'carddef:%s' % unused_carddef.url_name
4903
    wf.store()
4904
    perform_items([action], formdata)
4905
    assert LoggedError.count() == 0
4906
    assert external_formdef.data_class().count() == 0
4907
    assert external_carddef.data_class().count() == 1
4908
    # remove the right carddef
4909
    action.slug = 'carddef:%s' % external_carddef.url_name
4910
    wf.store()
4911
    perform_items([action], formdata)
4912
    assert LoggedError.count() == 0
4913
    assert external_formdef.data_class().count() == 0
4914
    assert external_carddef.data_class().count() == 0
4915

  
4892 4916

  
4893 4917
def test_call_external_workflow_with_data_sourced_object(pub):
4894 4918
    FormDef.wipe()
wcs/wf/external_workflow.py
132 132

  
133 133
        # search in evolution
134 134
        for part in formdata.iter_evolution_parts():
135
            if isinstance(part, LinkedFormdataEvolutionPart) and part.formdef_class == objectdef.__class__:
136
                data_ids.append(part.formdata_id)
135
            if isinstance(part, LinkedFormdataEvolutionPart):
136
               part_identifier = '%s:%s' % (part.formdef.xml_root_node, part.formdef.url_name)
137
               if part_identifier == self.slug:
138
                   data_ids.append(part.formdata_id)
137 139

  
138 140
        for target_id in data_ids:
139 141
            try:
140
-