misc: use None as empty checkboxes value (#75160) #1139
|
@ -715,6 +715,58 @@ def test_block_multi_string_modify_prefill(pub):
|
|||
assert resp.form['f3$element2$f123'].value == 'Bye World' # updated
|
||||
|
||||
|
||||
def test_block_string_prefill_and_items(pub):
|
||||
FormDef.wipe()
|
||||
BlockDef.wipe()
|
||||
|
||||
block = BlockDef()
|
||||
block.name = 'foobar'
|
||||
block.fields = [
|
||||
fields.StringField(
|
||||
id='123',
|
||||
required=True,
|
||||
label='Test',
|
||||
prefill={'type': 'string', 'value': '{{ form_var_foo }} World'},
|
||||
),
|
||||
fields.ItemsField(
|
||||
id='234',
|
||||
required=False,
|
||||
label='Items',
|
||||
items=['Pomme', 'Poire', 'Pêche', 'Abricot'],
|
||||
),
|
||||
]
|
||||
block.store()
|
||||
|
||||
formdef = FormDef()
|
||||
formdef.name = 'form title'
|
||||
formdef.fields = [
|
||||
fields.PageField(id='0', label='1st page'),
|
||||
fields.StringField(id='1', label='string', varname='foo'),
|
||||
fields.PageField(id='2', label='2nd page'),
|
||||
fields.BlockField(id='3', label='test', block_slug='foobar', max_items=5),
|
||||
]
|
||||
formdef.store()
|
||||
formdef.data_class().wipe()
|
||||
|
||||
app = get_app(pub)
|
||||
resp = app.get(formdef.get_url())
|
||||
resp.form['f1'] = 'Hello'
|
||||
resp = resp.form.submit('submit') # -> 2nd page
|
||||
assert resp.form['f3$element0$f123'].value == 'Hello World'
|
||||
resp = resp.form.submit('f3$add_element') # add second row
|
||||
assert resp.form['f3$element1$f123'].value == 'Hello World'
|
||||
resp = resp.form.submit('f3$add_element') # add third row
|
||||
assert resp.form['f3$element2$f123'].value == 'Hello World'
|
||||
resp = resp.form.submit('submit') # -> validation page
|
||||
resp = resp.form.submit('submit') # -> end page
|
||||
resp = resp.follow()
|
||||
|
||||
formdata = formdef.data_class().select()[0]
|
||||
assert formdata.data['3']['data'][0]['123'] == 'Hello World'
|
||||
assert formdata.data['3']['data'][1]['123'] == 'Hello World'
|
||||
assert formdata.data['3']['data'][2]['123'] == 'Hello World'
|
||||
|
||||
|
||||
def test_workflow_form_block_prefill(pub):
|
||||
FormDef.wipe()
|
||||
BlockDef.wipe()
|
||||
|
|
|
@ -974,7 +974,7 @@ class WidgetField(Field):
|
|||
)
|
||||
|
||||
def check_admin_form(self, form):
|
||||
display_locations = form.get_widget('display_locations').parse()
|
||||
display_locations = form.get_widget('display_locations').parse() or []
|
||||
varname = form.get_widget('varname').parse()
|
||||
if 'statistics' in display_locations and not varname:
|
||||
form.set_error(
|
||||
|
|
|
@ -1871,7 +1871,7 @@ class CheckboxesWidget(Widget):
|
|||
name = option['name']
|
||||
if name in request.form and not request.form[name] in (False, '', 'False'):
|
||||
values.append(option['value'])
|
||||
self.value = values
|
||||
self.value = values or None
|
||||
if self.required and not self.value:
|
||||
self.set_error(self.REQUIRED_ERROR)
|
||||
if self.value and self.min_choices and len(self.value) < self.min_choices:
|
||||
|
|
Loading…
Reference in New Issue