Projet

Général

Profil

0001-fields-fix-BlockField.get_view_value-on-invalid-valu.patch

Lauréline Guérin, 22 novembre 2022 13:12

Télécharger (2,23 ko)

Voir les différences:

Subject: [PATCH] fields: fix BlockField.get_view_value on invalid value
 (#71563)

 tests/form_pages/test_block.py | 34 ++++++++++++++++++++++++++++++++++
 wcs/fields.py                  |  2 ++
 2 files changed, 36 insertions(+)
tests/form_pages/test_block.py
2092 2092
    resp = app.get(formdef.get_url())
2093 2093
    assert resp.form['f1$element0$f123'].value == 'plop'
2094 2094
    assert resp.form['f1$element0$f234'].value == 'Bar'
2095

  
2096

  
2097
def test_formdata_page_with_block_bad_value(pub):
2098
    BlockDef.wipe()
2099
    user = create_user(pub)
2100

  
2101
    block = BlockDef()
2102
    block.name = 'foobar'
2103
    block.fields = [
2104
        fields.StringField(id='123', required=True, label='Test', type='string', varname='test'),
2105
    ]
2106
    block.store()
2107

  
2108
    formdef = FormDef()
2109
    formdef.name = 'test'
2110
    formdef.fields = [
2111
        fields.BlockField(id='1', label='test', type='block:foobar', varname='foobar'),
2112
    ]
2113
    formdef.store()
2114

  
2115
    formdef.data_class().wipe()
2116
    formdata = formdef.data_class()()
2117
    formdata.data = {
2118
        '1': None,
2119
        '1_display': 'hello',
2120
    }
2121
    formdata.just_created()
2122
    formdata.user_id = user.id
2123
    formdata.store()
2124

  
2125
    app = get_app(pub)
2126
    login(app, username='foo', password='foo')
2127
    resp = app.get(formdata.get_url())
2128
    assert resp.pyquery('div.field-type-block div.value').text() == ''
wcs/fields.py
3928 3928
            # when called from get_rst_view_value()
3929 3929
            return str(value or '')
3930 3930
        value = kwargs['value_id']
3931
        if value is None:
3932
            return ''
3931 3933
        r = TemplateIO(html=True)
3932 3934
        for i, row_value in enumerate(value['data']):
3933 3935
            context = self.block.get_substitution_counter_variables(i)
3934
-