diff --git a/tests/form_pages/test_all.py b/tests/form_pages/test_all.py index 2078a8f36..ca74e0d06 100644 --- a/tests/form_pages/test_all.py +++ b/tests/form_pages/test_all.py @@ -9879,7 +9879,6 @@ def test_workflow_form_file_access(pub): wf = Workflow(name='test') status = wf.add_status('New', 'st1') - next_status = wf.add_status('Next', 'st2') status.items = [] display_form = status.add_action('form', id='_display_form') @@ -9893,15 +9892,23 @@ def test_workflow_form_file_access(pub): ] jump = status.add_action('jumponsubmit', id='_jump') - jump.status = next_status.id + jump.status = status.id - register_comment = next_status.add_action('register-comment', id='_register') - register_comment.comment = '''

- 1st file in block - 2nd file in block - again 1st file in block - file field + display_message = status.add_action('displaymsg', id='_display') + display_message.message = '''

+ 1st file in block for last form + 2nd file in block for last form + file field for last form + + again 1st file in block for 1st form + again 1st file in block for 1st form + file field for 1st form + + again 1st file in block for 2nd form + again 1st file in block for 2nd form + file field< for 2nd form/a>

''' + display_message.to = [] wf.store() @@ -9924,10 +9931,32 @@ def test_workflow_form_file_access(pub): resp.form['fblah_1$element1$f123$file'] = Upload('test2.txt', b'foobar2', 'text/plain') resp.form['fblah_2$file'] = Upload('test3.txt', b'foobar3', 'text/plain') resp = resp.form.submit('submit').follow() + assert app.get(resp.pyquery('#t1').attr.href).body == b'foobar1' assert app.get(resp.pyquery('#t2').attr.href).body == b'foobar2' - assert app.get(resp.pyquery('#t3').attr.href).body == b'foobar1' - assert app.get(resp.pyquery('#t4').attr.href).body == b'foobar3' + assert app.get(resp.pyquery('#t3').attr.href).body == b'foobar3' + assert app.get(resp.pyquery('#t4').attr.href).body == b'foobar1' + assert app.get(resp.pyquery('#t5').attr.href).body == b'foobar2' + assert app.get(resp.pyquery('#t6').attr.href).body == b'foobar3' + + resp.form['fblah_1$element0$f123$file'] = Upload('test4.txt', b'foobar4', 'text/plain') + resp = resp.form.submit('fblah_1$add_element') + resp.form['fblah_1$element1$f123$file'] = Upload('test5.txt', b'foobar5', 'text/plain') + resp.form['fblah_2$file'] = Upload('test6.txt', b'foobar6', 'text/plain') + resp = resp.form.submit('submit').follow() + + # afer second submit of workflow form, general variable + # form_workflow_form_blah_var contains the last submitted form values + + assert app.get(resp.pyquery('#t1').attr.href).body == b'foobar4' + assert app.get(resp.pyquery('#t2').attr.href).body == b'foobar5' + assert app.get(resp.pyquery('#t3').attr.href).body == b'foobar6' + assert app.get(resp.pyquery('#t4').attr.href).body == b'foobar1' + assert app.get(resp.pyquery('#t5').attr.href).body == b'foobar2' + assert app.get(resp.pyquery('#t6').attr.href).body == b'foobar3' + assert app.get(resp.pyquery('#t7').attr.href).body == b'foobar4' + assert app.get(resp.pyquery('#t8').attr.href).body == b'foobar5' + assert app.get(resp.pyquery('#t9').attr.href).body == b'foobar6' app.get(resp.pyquery('#t4').attr.href + 'X', status=404) # wrong URL, unknown file # unlogged user diff --git a/wcs/formdata.py b/wcs/formdata.py index befeb8317..d166e235f 100644 --- a/wcs/formdata.py +++ b/wcs/formdata.py @@ -432,8 +432,7 @@ class FormData(StorableObject): yield part elif isinstance(part, WorkflowFormEvolutionPart): for field_data in (part.data or {}).values(): - if misc.is_upload(field_data): - yield field_data + yield from check_field_data(field_data) elif isinstance(part, ContentSnapshotPart): # look into old and new values (belt and suspenders) for field_data in list((part.old_data or {}).values()) + list((part.new_data or {}).values()):