misc: increase width of computed data field value template widget (#76591) #505
|
@ -3589,6 +3589,44 @@ def test_form_new_computed_field(pub):
|
|||
assert resp.form['data_source$type'].options == [('None', True, 'None'), ('carddef:baz', False, 'Baz')]
|
||||
|
||||
|
||||
def test_form_edit_computed_field(pub):
|
||||
create_superuser(pub)
|
||||
create_role(pub)
|
||||
|
||||
FormDef.wipe()
|
||||
formdef = FormDef()
|
||||
formdef.name = 'form title'
|
||||
formdef.fields = []
|
||||
formdef.store()
|
||||
|
||||
app = login(get_app(pub))
|
||||
resp = app.get('/backoffice/forms/1/')
|
||||
resp = resp.click(href='fields/')
|
||||
|
||||
resp.forms[0]['label'] = 'foobar'
|
||||
resp.forms[0]['type'] = 'computed'
|
||||
resp = resp.forms[0].submit().follow()
|
||||
field = FormDef.get(1).fields[0]
|
||||
|
||||
resp = app.get('/backoffice/forms/%s/fields/%s/' % (formdef.id, field.id))
|
||||
assert resp.pyquery('input#form_value_template').attr.size == '150'
|
||||
resp.form['value_template'] = '{% with %}' # invalid syntax
|
||||
resp = resp.form.submit('submit')
|
||||
assert 'syntax error' in resp.pyquery('#form_error_value_template').text()
|
||||
|
||||
resp.form['value_template'] = '{{ "%s" }}' % ('xxxx ' * 200) # long string
|
||||
resp = resp.form.submit('submit')
|
||||
|
||||
# check a long template value is displayed in a textarea
|
||||
resp = app.get('/backoffice/forms/%s/fields/%s/' % (formdef.id, field.id))
|
||||
assert resp.pyquery('textarea#form_value_template').attr.rows == '7'
|
||||
|
||||
# check template validation is still effective
|
||||
resp.form['value_template'] = '{% with %}' # invalid syntax
|
||||
resp = resp.form.submit('submit')
|
||||
assert 'syntax error' in resp.pyquery('#form_error_value_template').text()
|
||||
|
||||
|
||||
def test_form_category_management_roles(pub, backoffice_user, backoffice_role):
|
||||
app = login(get_app(pub), username='backoffice-user', password='backoffice-user')
|
||||
app.get('/backoffice/forms/', status=403)
|
||||
|
|
|
@ -4374,15 +4374,20 @@ class ComputedField(Field):
|
|||
size=30,
|
||||
hint=_('This is used as suffix for variable names.'),
|
||||
)
|
||||
value_widget = StringWidget
|
||||
value_widget_kwargs = {'size': 150}
|
||||
if len(self.value_template or '') > value_widget_kwargs['size']:
|
||||
value_widget = TextWidget
|
||||
value_widget_kwargs = {'cols': 150, 'rows': len(self.value_template) // 150 + 1}
|
||||
form.add(
|
||||
StringWidget,
|
||||
value_widget,
|
||||
'value_template',
|
||||
title=_('Value'),
|
||||
required=True,
|
||||
size=80,
|
||||
value=self.value_template,
|
||||
validation_function=ComputedExpressionWidget.validate_template,
|
||||
hint=_('As a Django template'),
|
||||
**value_widget_kwargs,
|
||||
)
|
||||
form.add(
|
||||
CheckboxWidget,
|
||||
|
|
Loading…
Reference in New Issue