Projet

Général

Profil

0001-misc-don-t-crash-restoring-unset-table-with-rows-fie.patch

Frédéric Péters, 17 avril 2019 16:06

Télécharger (2,71 ko)

Voir les différences:

Subject: [PATCH] misc: don't crash restoring unset table with rows field
 (#32424)

 tests/test_form_pages.py | 42 ++++++++++++++++++++++++++++++++++++++++
 wcs/formdef.py           |  2 +-
 2 files changed, 43 insertions(+), 1 deletion(-)
tests/test_form_pages.py
2710 2710
    assert 'The form has been recorded' in resp.body
2711 2711
    assert 'ee' in emails.emails['New form (test)']['msg'].get_payload()[1].get_payload()
2712 2712

  
2713
def test_form_new_table_rows_field_draft_recall(pub):
2714
    formdef = create_formdef()
2715
    formdef.enable_tracking_codes = True
2716
    formdef.fields = [
2717
        fields.PageField(id='0', label='1st page', type='page'),
2718
        fields.StringField(id='1', label='string'),
2719
        fields.PageField(id='2', label='2nd page', type='page'),
2720
    ]
2721
    formdef.store()
2722
    formdef.data_class().wipe()
2723

  
2724
    formdef.store()
2725

  
2726
    app = get_app(pub)
2727
    resp = app.get('/test/')
2728
    resp.form['f1'] = 'test'
2729
    resp = resp.form.submit('submit')
2730
    resp = resp.form.submit('submit')
2731
    assert 'Check values then click submit.' in resp.body
2732
    tracking_code = get_displayed_tracking_code(resp)
2733
    assert tracking_code is not None
2734

  
2735
    # add new table rows field to formdef
2736
    formdef.fields.append(
2737
        fields.TableRowsField(id='3', label='table', type='tablerows',
2738
            columns=['a', 'b'], required=False)
2739
    )
2740
    formdef.store()
2741

  
2742
    # restore form on validation page
2743
    resp = get_app(pub).get('/')
2744
    resp.form['code'] = tracking_code
2745
    resp = resp.form.submit().follow().follow().follow()
2746

  
2747
    # validate form
2748
    resp = resp.forms[1].submit()
2749
    resp = resp.follow()
2750
    assert 'The form has been recorded' in resp.body
2751
    assert formdef.data_class().count() == 1
2752
    assert formdef.data_class().select()[0].data['1'] == 'test'
2753
    assert formdef.data_class().select()[0].data['3'] is None
2754

  
2713 2755
def test_formdata_attachment_download(pub):
2714 2756
    create_user(pub)
2715 2757
    wf = Workflow(name='status')
wcs/formdef.py
620 620
                continue
621 621

  
622 622
            current_page_fields.append(field)
623
            value = dict.get(field.id, '')
623
            value = dict.get(field.id)
624 624
            field.add_to_view_form(form, value)
625 625

  
626 626
        if on_page:
627
-