Projet

Général

Profil

0002-backoffice-fix-form-fields-reorder-45380.patch

Lauréline Guérin, 23 juillet 2020 16:52

Télécharger (2,68 ko)

Voir les différences:

Subject: [PATCH 2/2] backoffice: fix form fields reorder (#45380)

 tests/test_forms_admin_pages.py | 30 ++++++++++++++++++++++++++++++
 wcs/admin/fields.py             |  9 ++++++++-
 2 files changed, 38 insertions(+), 1 deletion(-)
tests/test_forms_admin_pages.py
1833 1833
    FormDef.wipe()
1834 1834

  
1835 1835

  
1836
def test_form_fields_reorder(pub):
1837
    create_superuser(pub)
1838
    create_role()
1839

  
1840
    FormDef.wipe()
1841
    formdef = FormDef()
1842
    formdef.name = 'form title'
1843
    formdef.fields = [
1844
        fields.PageField(id='0', label='1st page', type='page'),
1845
        fields.StringField(id='1', label='string', type='string'),
1846
        fields.PageField(id='2', label='2nd page', type='page'),
1847
        fields.StringField(id='3', label='string 2', type='string')
1848
    ]
1849
    formdef.store()
1850

  
1851
    app = login(get_app(pub))
1852
    app.get('/backoffice/forms/%s/fields/update_order?order=0;3;1;2;' % formdef.id)
1853
    formdef = FormDef.get(formdef.id)
1854
    assert [x.id for x in formdef.fields] == ['0', '3', '1', '2']
1855

  
1856
    # unknown id: ignored
1857
    app.get('/backoffice/forms/%s/fields/update_order?order=0;1;2;3;4;' % formdef.id)
1858
    formdef = FormDef.get(formdef.id)
1859
    assert [x.id for x in formdef.fields] == ['0', '1', '2', '3']
1860
    # missing id: do nothing
1861
    app.get('/backoffice/forms/%s/fields/update_order?order=0;3;1;' % formdef.id)
1862
    formdef = FormDef.get(formdef.id)
1863
    assert [x.id for x in formdef.fields] == ['0', '1', '2', '3']
1864

  
1865

  
1836 1866
def test_form_limit_display_to_page(pub):
1837 1867
    create_superuser(pub)
1838 1868
    create_role()
wcs/admin/fields.py
374 374
    def update_order(self):
375 375
        request = get_request()
376 376
        new_order = request.form['order'].strip(';').split(';')
377
        new_fields = [ [x for x in self.objectdef.fields if x.id == y][0] for y in new_order]
377
        new_fields = []
378
        for y in new_order:
379
            for x in self.objectdef.fields:
380
                if x.id == y:
381
                    new_fields.append(x)
382
                    break
383
        if set(self.objectdef.fields) != set(new_fields):
384
            return 'ko'
378 385
        self.objectdef.fields = new_fields
379 386
        self.objectdef.store()
380 387
        return 'ok'
381
-