Projet

Général

Profil

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

Emmanuel Cazenave, 04 mars 2021 13:44

Télécharger (3,74 ko)

Voir les différences:

Subject: [PATCH 1/3] 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
2804 2804
        'type': 'formula',
2805 2805
        'value': repr([('1', 'un'), ('2', 'deux'), ('3', 'trois')]),
2806 2806
    }
2807
    assert submit_items_data_source_field(ds) == {'0': ['1', '3'], '0_display': 'un, trois'}
2807
    assert submit_items_data_source_field(ds) == {
2808
        '0': ['1', '3'],
2809
        '0_display': 'un, trois',
2810
        '0_structured': [{'id': '1', 'text': 'un'}, {'id': '3', 'text': 'trois'}],
2811
    }
2808 2812

  
2809 2813
    ds['value'] = repr([{'id': '1', 'text': 'un'}, {'id': '2', 'text': 'deux'}, {'id': '3', 'text': 'trois'}])
2810
    assert submit_items_data_source_field(ds) == {'0': ['1', '3'], '0_display': 'un, trois'}
2814
    assert submit_items_data_source_field(ds) == {
2815
        '0': ['1', '3'],
2816
        '0_display': 'un, trois',
2817
        '0_structured': [{'id': '1', 'text': 'un'}, {'id': '3', 'text': 'trois'}],
2818
    }
2811 2819

  
2812 2820
    ds['value'] = repr(
2813 2821
        [
......
4311 4319
    resp = resp.form.submit('submit')
4312 4320
    resp = resp.follow()
4313 4321

  
4314
    assert data_class.select()[0].data == {'1': ['un', 'deux'], '1_display': 'un, deux'}
4322
    assert data_class.select()[0].data == {
4323
        '1': ['un', 'deux'],
4324
        '1_display': 'un, deux',
4325
        '1_structured': [{'id': 'un', 'text': 'un'}, {'id': 'deux', 'text': 'deux'}],
4326
    }
4315 4327

  
4316 4328
    data_source.data_source = {
4317 4329
        'type': 'formula',
......
4330 4342
    resp = resp.form.submit('submit')
4331 4343
    resp = resp.follow()
4332 4344

  
4333
    assert data_class.select()[0].data == {'1': ['1', '2'], '1_display': 'un, deux'}
4345
    assert data_class.select()[0].data == {
4346
        '1': ['1', '2'],
4347
        '1_display': 'un, deux',
4348
        '1_structured': [{'id': '1', 'text': 'un'}, {'id': '2', 'text': 'deux'}],
4349
    }
4334 4350

  
4335 4351
    data_source.data_source = {
4336 4352
        '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
-