manager: add support for a new "text" json cell parameter type (#22129)

This commit is contained in:
Frédéric Péters 2018-02-27 10:19:25 +01:00
parent 77c053945c
commit a4f6f452b8
3 changed files with 19 additions and 1 deletions

View File

@ -101,12 +101,17 @@ class ConfigJsonForm(forms.ModelForm):
'string': forms.CharField,
'bool': forms.BooleanField,
}
widget_classes = {
'text': forms.widgets.Textarea,
}
for field in self.formdef:
field_class = field_classes.get(field.get('type'), forms.CharField)
self.fields[field['varname']] = field_class(
label=field['label'],
required=field.get('required', True),
initial=parameters.get(field['varname']))
initial=parameters.get(field['varname']),
widget=widget_classes.get(field.get('type')),
)
def clean(self):
self.cleaned_data['parameters'] = {}

View File

@ -37,6 +37,10 @@ div.cell-list > div > div {
overflow: hidden;
}
.cell-form textarea {
width: 100%;
}
div.cell-list > div.untoggled > div {
display: block;
max-height: 0;

View File

@ -532,6 +532,12 @@ def test_edit_config_json_cell(app, admin_user):
'label': 'Test no type is string',
'varname': 'test3',
},
{
'label': 'Test text',
'type': 'text',
'varname': 'test4',
'required': False,
},
]}},
TEMPLATES=templates_settings):
resp = app.get('/manage/pages/%s/' % page.id)
@ -552,6 +558,8 @@ def test_edit_config_json_cell(app, admin_user):
assert ('data-cell-reference="%s"' % cells[0].get_reference()) in resp.body
resp.forms[0]['c%s-test' % cells[0].get_reference()].value = 'World Hello'
resp.forms[0]['c%s-test2' % cells[0].get_reference()].checked = True
assert resp.form['c%s-test4' % cells[0].get_reference()].tag == 'textarea'
resp.forms[0]['c%s-test4' % cells[0].get_reference()].value = 'Text Area'
resp = resp.form.submit(xhr=True)
assert resp.status_int == 200
assert resp.body.startswith('<p><label')
@ -560,6 +568,7 @@ def test_edit_config_json_cell(app, admin_user):
assert resp.form['c%s-test' % cells[0].get_reference()].value == 'World Hello'
assert resp.form['c%s-test2' % cells[0].get_reference()].checked is True
assert resp.form['c%s-test3' % cells[0].get_reference()].value == 'Hello again'
assert resp.form['c%s-test4' % cells[0].get_reference()].value == 'Text Area'
def test_logout(app, admin_user):