backoffice: fix form fields reorder (#45380)
This commit is contained in:
parent
7f155f3a52
commit
05931348df
|
@ -1992,6 +1992,36 @@ def test_form_limit_display_to_page(pub):
|
|||
assert '{{form_var_baz}}' in hidden_fields
|
||||
|
||||
|
||||
def test_form_fields_reorder(pub):
|
||||
create_superuser(pub)
|
||||
create_role()
|
||||
|
||||
FormDef.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'form title'
|
||||
formdef.fields = [
|
||||
fields.PageField(id='0', label='1st page', type='page'),
|
||||
fields.StringField(id='1', label='string', type='string'),
|
||||
fields.PageField(id='2', label='2nd page', type='page'),
|
||||
fields.StringField(id='3', label='string 2', type='string')
|
||||
]
|
||||
formdef.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
app.get('/backoffice/forms/%s/fields/update_order?order=0;3;1;2;' % formdef.id)
|
||||
formdef = FormDef.get(formdef.id)
|
||||
assert [x.id for x in formdef.fields] == ['0', '3', '1', '2']
|
||||
|
||||
# unknown id: ignored
|
||||
app.get('/backoffice/forms/%s/fields/update_order?order=0;1;2;3;4;' % formdef.id)
|
||||
formdef = FormDef.get(formdef.id)
|
||||
assert [x.id for x in formdef.fields] == ['0', '1', '2', '3']
|
||||
# missing id: do nothing
|
||||
app.get('/backoffice/forms/%s/fields/update_order?order=0;3;1;' % formdef.id)
|
||||
formdef = FormDef.get(formdef.id)
|
||||
assert [x.id for x in formdef.fields] == ['0', '1', '2', '3']
|
||||
|
||||
|
||||
def test_form_legacy_int_id(pub):
|
||||
create_superuser(pub)
|
||||
create_role()
|
||||
|
|
|
@ -374,7 +374,14 @@ class FieldsDirectory(Directory):
|
|||
def update_order(self):
|
||||
request = get_request()
|
||||
new_order = request.form['order'].strip(';').split(';')
|
||||
new_fields = [ [x for x in self.objectdef.fields if x.id == y][0] for y in new_order]
|
||||
new_fields = []
|
||||
for y in new_order:
|
||||
for x in self.objectdef.fields:
|
||||
if x.id == y:
|
||||
new_fields.append(x)
|
||||
break
|
||||
if set(self.objectdef.fields) != set(new_fields):
|
||||
return 'ko'
|
||||
self.objectdef.fields = new_fields
|
||||
self.objectdef.store()
|
||||
return 'ok'
|
||||
|
|
Loading…
Reference in New Issue