Projet

Général

Profil

0001-fields-store-_structured-on-ItemsField-for-every-dat.patch

Emmanuel Cazenave, 16 mars 2021 12:12

Télécharger (3,74 ko)

Voir les différences:

Subject: [PATCH 1/2] fields: store _structured on ItemsField for every data
 source (#44123)

 tests/form_pages/test_all.py | 24 ++++++++++++++++++++----
 tests/test_formdata.py       |  5 +----
 wcs/fields.py                |  2 --
 3 files changed, 21 insertions(+), 10 deletions(-)
tests/form_pages/test_all.py
2813 2813
        'type': 'formula',
2814 2814
        'value': repr([('1', 'un'), ('2', 'deux'), ('3', 'trois')]),
2815 2815
    }
2816
    assert submit_items_data_source_field(ds) == {'0': ['1', '3'], '0_display': 'un, trois'}
2816
    assert submit_items_data_source_field(ds) == {
2817
        '0': ['1', '3'],
2818
        '0_display': 'un, trois',
2819
        '0_structured': [{'id': '1', 'text': 'un'}, {'id': '3', 'text': 'trois'}],
2820
    }
2817 2821

  
2818 2822
    ds['value'] = repr([{'id': '1', 'text': 'un'}, {'id': '2', 'text': 'deux'}, {'id': '3', 'text': 'trois'}])
2819
    assert submit_items_data_source_field(ds) == {'0': ['1', '3'], '0_display': 'un, trois'}
2823
    assert submit_items_data_source_field(ds) == {
2824
        '0': ['1', '3'],
2825
        '0_display': 'un, trois',
2826
        '0_structured': [{'id': '1', 'text': 'un'}, {'id': '3', 'text': 'trois'}],
2827
    }
2820 2828

  
2821 2829
    ds['value'] = repr(
2822 2830
        [
......
4320 4328
    resp = resp.form.submit('submit')
4321 4329
    resp = resp.follow()
4322 4330

  
4323
    assert data_class.select()[0].data == {'1': ['un', 'deux'], '1_display': 'un, deux'}
4331
    assert data_class.select()[0].data == {
4332
        '1': ['un', 'deux'],
4333
        '1_display': 'un, deux',
4334
        '1_structured': [{'id': 'un', 'text': 'un'}, {'id': 'deux', 'text': 'deux'}],
4335
    }
4324 4336

  
4325 4337
    data_source.data_source = {
4326 4338
        'type': 'formula',
......
4339 4351
    resp = resp.form.submit('submit')
4340 4352
    resp = resp.follow()
4341 4353

  
4342
    assert data_class.select()[0].data == {'1': ['1', '2'], '1_display': 'un, deux'}
4354
    assert data_class.select()[0].data == {
4355
        '1': ['1', '2'],
4356
        '1_display': 'un, deux',
4357
        '1_structured': [{'id': '1', 'text': 'un'}, {'id': '2', 'text': 'deux'}],
4358
    }
4343 4359

  
4344 4360
    data_source.data_source = {
4345 4361
        'type': 'formula',
tests/test_formdata.py
2609 2609

  
2610 2610
    assert 'form_var_plop2' in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
2611 2611
    assert 'form_var_plop2_raw' in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
2612
    assert (
2613
        'form_var_plop2_structured'
2614
        not in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
2615
    )
2612
    assert 'form_var_plop2_structured' in pub.substitutions.get_context_variables(mode='lazy').get_flat_keys()
2616 2613

  
2617 2614

  
2618 2615
def test_formdata_user_field(pub, variable_test_data):
wcs/fields.py
2297 2297
        structured_options = data_sources.get_structured_items(self.data_source)
2298 2298
        if not structured_options:
2299 2299
            return
2300
        if not set(structured_options[0].keys()) != set(['id', 'text']):
2301
            return
2302 2300
        structured_value = []
2303 2301
        for structured_option in structured_options:
2304 2302
            for choice in data.get(field_id) or []:
2305
-