Skip to content

Commit ac01a0b

Browse files
authored
Merge pull request #195 from novafloss/fix-serializer-blank-description
Fix serializer blank description
2 parents 8ea3a30 + 19e5556 commit ac01a0b

File tree

4 files changed

+35
-4
lines changed

4 files changed

+35
-4
lines changed

CHANGELOG.rst

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

8-
- Nothing here yet
8+
- Fix: Serializers don't allow empty (blank) description on Field and Item (#194).
99

1010
Release 0.8.0 (2016-03-06)
1111
==========================

demo/tests/test_end_point.py

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -453,6 +453,21 @@ class CreateSerializerTestCase(TestCase):
453453
}
454454
]
455455

456+
fields_with_items_empty_description = [
457+
{
458+
'type_id': 'dropdown',
459+
'slug': 'dropdown-input', 'label': 'dropdown label',
460+
'multiple': False, 'items': [
461+
{'value': 'tutu', 'label': 'toto', 'description': ''},
462+
{'value': 'tata', 'label': 'plop'},
463+
],
464+
'description': '',
465+
'accesses': [{
466+
'access_id': 'padawan', 'level': 'REQUIRED'
467+
}]
468+
}
469+
]
470+
456471
fields_with_validation = [
457472
{
458473
'slug': 'text_input',
@@ -751,6 +766,22 @@ def test_create_field_with_items(self):
751766
)
752767
self.assertEquals(field.accesses.count(), 5)
753768

769+
def test_create_empty_description(self):
770+
data = copy.deepcopy(self.data)
771+
data['fields'] = self.fields_with_items_empty_description
772+
serializer = FormidableSerializer(data=data)
773+
self.assertTrue(serializer.is_valid(), serializer.errors)
774+
instance = serializer.save()
775+
self.assertEquals(instance.label, 'test_create')
776+
self.assertEquals(instance.description, 'description create')
777+
self.assertEquals(instance.fields.count(), 1)
778+
field = instance.fields.first()
779+
self.assertEquals(field.slug, 'dropdown-input')
780+
self.assertEquals(field.help_text, '')
781+
self.assertEquals(field.items.count(), 2)
782+
item = field.items.first()
783+
self.assertEquals(item.help_text, '')
784+
754785
def test_create_field_without_items(self):
755786
data = copy.deepcopy(self.data)
756787
fields = copy.deepcopy(self.fields_with_items)

formidable/serializers/fields.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ class FieldSerializer(WithNestedSerializer):
6868
order = serializers.IntegerField(write_only=True, required=False)
6969
defaults = DefaultSerializer(many=True, required=False)
7070
description = serializers.CharField(required=False, allow_null=True,
71-
source='help_text')
71+
allow_blank=True, source='help_text')
7272

7373
nested_objects = ['accesses', 'validations', 'defaults']
7474

@@ -136,7 +136,7 @@ class ContextFieldSerializer(serializers.ModelSerializer):
136136
items = ItemSerializer(many=True, required=False)
137137
defaults = DefaultSerializer(many=True, required=False)
138138
description = serializers.CharField(required=False, allow_null=True,
139-
source='help_text')
139+
allow_blank=True, source='help_text')
140140

141141
class Meta:
142142
list_serializer_class = ListContextFieldSerializer

formidable/serializers/items.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ def validate(self, data):
2323
class ItemSerializer(serializers.ModelSerializer):
2424

2525
description = serializers.CharField(required=False, allow_null=True,
26-
source='help_text')
26+
allow_blank=True, source='help_text')
2727

2828
def to_internal_value(self, data):
2929
# XXX FIX ME: temporary fix

0 commit comments

Comments
 (0)