Skip to content

Commit 0cd6cc1

Browse files
author
Sylvain Delabye
authored
Merge pull request #407 from peopledoc/FORM-1616-fix-default-readonly-dict
Fix defaults on readonly during validation from schema
2 parents a51adba + 7799948 commit 0cd6cc1

File tree

3 files changed

+29
-1
lines changed

3 files changed

+29
-1
lines changed

CHANGELOG.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ ChangeLog
55
master (unreleased)
66
===================
77

8+
- Fix defaults on readonly fields during validation from schema
89
- Fix default values for readonly date fields.
910
- Improve default values for readonly fields.
1011
- Applying isort v5+ changes: no ``--recursive flag``, removed the ``not_skip`` settings. (internal change, no runtime impact).

demo/tests/test_integration.py

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -430,6 +430,33 @@ def test_form_readonly_empty_defaults(self):
430430
'readonly_radios_buttons': 'val1'
431431
})
432432

433+
def test_validate_form_readonly_empty_defaults(self):
434+
435+
session = self.client.session
436+
session['role'] = 'padawan'
437+
session.save()
438+
439+
form_data = deepcopy(form_data_readonly)
440+
# Preparing a "bad" defaults
441+
for field in form_data['fields']:
442+
field['defaults'].append("") # empty value
443+
444+
res = self.client.post(
445+
reverse('formidable:form_create'),
446+
form_data, format='json')
447+
self.assertEquals(res.status_code, 201)
448+
formidable = Formidable.objects.order_by('pk').last()
449+
450+
# Validation from schema
451+
res = self.client.post(
452+
reverse('form_validation_schema', args=[formidable.pk]),
453+
{}, format='json'
454+
)
455+
self.assertEqual(res.status_code, 204)
456+
self.assertIn(res.content, ("", b"")) # Should be empty
457+
# As a consequence, if there's no body content, there shouldn't be any
458+
# content-type sent back to the client.
459+
433460

434461
class TestChain(FormidableAPITestCase):
435462

formidable/forms/field_builder.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,7 +96,7 @@ def get_disabled(self):
9696

9797
def get_initial(self):
9898
if self.field_is_dict and 'defaults' in self.field:
99-
defaults = self.field['defaults']
99+
defaults = [x for x in self.field['defaults'] if x]
100100
if len(defaults) > 0:
101101
if (self.field_class == MultipleChoiceField
102102
or self.field.get('multiple', False)):

0 commit comments

Comments
 (0)