Skip to content

Commit 5f64eff

Browse files
authored
Merge pull request #188 from novafloss/fix_help_text_in_api
Change `help_text` to `description` in the API
2 parents d57a512 + c5de7e9 commit 5f64eff

File tree

5 files changed

+72
-24
lines changed

5 files changed

+72
-24
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+
* Change `help_text` to `description` in the API (in order to catch up formidable-ui)
99

1010
Release 0.7.1 (2017-02-22)
1111
==========================

demo/tests/test_end_point.py

Lines changed: 43 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ def test_text_field(self):
9595
self.assertEquals(text_field['type_id'], 'text')
9696
self.assertEquals(text_field['label'], 'test text')
9797
self.assertEquals(text_field['placeholder'], 'put your name here')
98-
self.assertEquals(text_field['help_text'], 'your name')
98+
self.assertEquals(text_field['description'], 'your name')
9999
self.assertEquals(text_field['defaults'], [])
100100
self.assertNotIn('multiple', text_field)
101101
self.assertNotIn('items', text_field)
@@ -111,7 +111,7 @@ def test_text_field2(self):
111111
self.assertEquals(text_field['type_id'], 'text')
112112
self.assertEquals(text_field['label'], 'test text 2')
113113
self.assertEquals(text_field['placeholder'], 'put your name here')
114-
self.assertEquals(text_field['help_text'], 'your name')
114+
self.assertEquals(text_field['description'], 'your name')
115115
self.assertNotIn('multiple', text_field)
116116
self.assertNotIn('items', text_field)
117117
self.assertIn('accesses', text_field)
@@ -155,7 +155,7 @@ def test_helptext_field(self):
155155
data = serializer.data['fields'][0]
156156
for field in list(set(RENDER_BASE_FIELDS) - set(['label'])):
157157
self.assertIn(field, data)
158-
self.assertEqual(data['help_text'],
158+
self.assertEqual(data['description'],
159159
'Please enter your information here')
160160

161161
def test_title_field(self):
@@ -167,11 +167,11 @@ def test_title_field(self):
167167
)
168168
serializer = FormidableSerializer(instance=self.form)
169169
data = serializer.data['fields'][0]
170-
for field in set(RENDER_BASE_FIELDS) - set(['help_text']):
170+
for field in set(RENDER_BASE_FIELDS) - set(['description']):
171171
self.assertIn(field, data)
172172
self.assertEqual(data['label'],
173173
'This is on onboarding form.')
174-
self.assertNotIn('help_text', data)
174+
self.assertNotIn('description', data)
175175

176176
def test_email_field(self):
177177
self.form.fields.all().delete()
@@ -560,7 +560,7 @@ class CreateSerializerTestCase(TestCase):
560560
{
561561
'slug': 'myhelptext',
562562
'type_id': 'help_text',
563-
'help_text': 'Hello',
563+
'description': 'Hello',
564564
'accesses': [],
565565
}
566566
]
@@ -638,7 +638,7 @@ def test_create_field(self):
638638
data = copy.deepcopy(self.data)
639639
data['fields'] = copy.deepcopy(self.fields_without_items)
640640
serializer = FormidableSerializer(data=data)
641-
self.assertTrue(serializer.is_valid())
641+
self.assertTrue(serializer.is_valid(), serializer.errors)
642642
instance = serializer.save()
643643
self.assertEquals(instance.label, 'test_create')
644644
self.assertEquals(instance.description, 'description create')
@@ -733,7 +733,7 @@ def test_create_field_with_items(self):
733733
data = copy.deepcopy(self.data)
734734
data['fields'] = self.fields_with_items
735735
serializer = FormidableSerializer(data=data)
736-
self.assertTrue(serializer.is_valid())
736+
self.assertTrue(serializer.is_valid(), serializer.errors)
737737
instance = serializer.save()
738738
self.assertEquals(instance.label, 'test_create')
739739
self.assertEquals(instance.description, 'description create')
@@ -1197,8 +1197,8 @@ def test_render_preset_field_arg(self):
11971197
self.assertEqual(data['slug'], 'test')
11981198
self.assertIn('label', data)
11991199
self.assertEqual(data['label'], 'test')
1200-
self.assertIn('help_text', data)
1201-
self.assertEqual(data['help_text'], 'pick up the field to validated')
1200+
self.assertIn('description', data)
1201+
self.assertEqual(data['description'], 'pick up the field to validated')
12021202
self.assertIn('types', data)
12031203
self.assertEqual(len(data['types']), 1)
12041204
self.assertIn('field', data['types'])
@@ -1229,8 +1229,8 @@ def test_render_preset_value_arg(self):
12291229
self.assertEqual(data['slug'], 'test')
12301230
self.assertIn('label', data)
12311231
self.assertEqual(data['label'], 'test')
1232-
self.assertIn('help_text', data)
1233-
self.assertEqual(data['help_text'], 'pick up the value to compare')
1232+
self.assertIn('description', data)
1233+
self.assertEqual(data['description'], 'pick up the value to compare')
12341234
self.assertIn('types', data)
12351235
self.assertEqual(len(data['types']), 1)
12361236
self.assertIn('value', data['types'])
@@ -1247,8 +1247,8 @@ def test_render_preset_hybrid_arg(self):
12471247
self.assertEqual(data['slug'], 'test')
12481248
self.assertIn('label', data)
12491249
self.assertEqual(data['label'], 'test')
1250-
self.assertIn('help_text', data)
1251-
self.assertEqual(data['help_text'], 'pick up the value to compare')
1250+
self.assertIn('description', data)
1251+
self.assertEqual(data['description'], 'pick up the value to compare')
12521252
self.assertIn('types', data)
12531253
self.assertEqual(len(data['types']), 2)
12541254
self.assertIn('value', data['types'])
@@ -1264,3 +1264,32 @@ def test_render_preset_with_argument(self):
12641264
data = serializer.data
12651265
self.assertIn('arguments', data)
12661266
self.assertEqual(len(data['arguments']), 2)
1267+
1268+
1269+
class CreateSerializerMigrationTestCase(TestCase):
1270+
data = {
1271+
'label': 'test_create',
1272+
'description': 'description create',
1273+
'fields': [
1274+
{
1275+
'type_id': 'dropdown',
1276+
'slug': 'dropdown-input', 'label': 'dropdown label',
1277+
'help_text': 'Field Help',
1278+
'multiple': False,
1279+
'items': [
1280+
{'value': 'tutu', 'label': 'toto',
1281+
'help_text': 'Item Help'},
1282+
{'value': 'tata', 'label': 'plop'},
1283+
],
1284+
'accesses': []
1285+
}
1286+
]
1287+
}
1288+
1289+
def test_create(self):
1290+
serializer = FormidableSerializer(data=self.data)
1291+
self.assertTrue(serializer.is_valid(), serializer.errors)
1292+
form = serializer.save()
1293+
self.assertEqual(form.fields.all()[0].help_text, 'Field Help')
1294+
self.assertEqual(form.fields.all()[0].items.all()[0].help_text,
1295+
'Item Help')

formidable/serializers/fields.py

Lines changed: 17 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@
1818
from rest_framework import serializers
1919

2020
BASE_FIELDS = (
21-
'slug', 'label', 'type_id', 'placeholder', 'help_text',
21+
'slug', 'label', 'type_id', 'placeholder', 'description',
2222
'accesses', 'validations', 'order', 'defaults'
2323
)
2424

@@ -67,9 +67,17 @@ class FieldSerializer(WithNestedSerializer):
6767
# incomming payload, it will be automatically overrided.
6868
order = serializers.IntegerField(write_only=True, required=False)
6969
defaults = DefaultSerializer(many=True, required=False)
70+
description = serializers.CharField(required=False, allow_null=True,
71+
source='help_text')
7072

7173
nested_objects = ['accesses', 'validations', 'defaults']
7274

75+
def to_internal_value(self, data):
76+
# XXX FIX ME: temporary fix
77+
if 'help_text' in data:
78+
data['description'] = data.pop('help_text')
79+
return super(FieldSerializer, self).to_internal_value(data)
80+
7381
class Meta:
7482
model = Field
7583
list_serializer_class = FieldListSerializer
@@ -127,12 +135,14 @@ class ContextFieldSerializer(serializers.ModelSerializer):
127135
validations = ValidationSerializer(many=True, required=False)
128136
items = ItemSerializer(many=True, required=False)
129137
defaults = DefaultSerializer(many=True, required=False)
138+
description = serializers.CharField(required=False, allow_null=True,
139+
source='help_text')
130140

131141
class Meta:
132142
list_serializer_class = ListContextFieldSerializer
133143
model = Field
134144
fields = (
135-
'slug', 'label', 'type_id', 'placeholder', 'help_text',
145+
'slug', 'label', 'type_id', 'placeholder', 'description',
136146
'validations', 'disabled', 'required', 'multiple', 'items',
137147
'defaults',
138148
)
@@ -278,7 +288,7 @@ class Meta(FieldSerializer.Meta):
278288
class HelpTextFieldSerializer(FieldSerializer):
279289

280290
type_id = 'help_text'
281-
help_text = serializers.CharField(required=True)
291+
description = serializers.CharField(required=True, source='help_text')
282292

283293
class Meta(FieldSerializer.Meta):
284294
# Remove "label" attribute
@@ -291,8 +301,8 @@ class TitleFieldSerializer(FieldSerializer):
291301
type_id = 'title'
292302

293303
class Meta(FieldSerializer.Meta):
294-
# Remove "help_text" attribute
295-
fields = list(set(BASE_FIELDS) - set(['help_text']))
304+
# Remove "description" attribute
305+
fields = list(set(BASE_FIELDS) - set(['description']))
296306

297307

298308
@load_serializer(field_register)
@@ -301,5 +311,5 @@ class SeparatorFieldSerializer(FieldSerializer):
301311
type_id = 'separator'
302312

303313
class Meta(FieldSerializer.Meta):
304-
# Remove "help_text" and "label" attributes
305-
fields = list(set(BASE_FIELDS) - set(['label', 'help_text']))
314+
# Remove "description" and "label" attributes
315+
fields = list(set(BASE_FIELDS) - set(['label', 'description']))

formidable/serializers/items.py

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,16 @@ def validate(self, data):
2222

2323
class ItemSerializer(serializers.ModelSerializer):
2424

25+
description = serializers.CharField(required=False, allow_null=True,
26+
source='help_text')
27+
28+
def to_internal_value(self, data):
29+
# XXX FIX ME: temporary fix
30+
if 'help_text' in data:
31+
data['description'] = data.pop('help_text')
32+
return super(ItemSerializer, self).to_internal_value(data)
33+
2534
class Meta:
2635
model = Item
2736
list_serializer_class = ItemListSerializer
28-
fields = ('value', 'label', 'help_text')
37+
fields = ('value', 'label', 'description')

formidable/serializers/presets.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class Meta:
5858

5959
slug = fields.SlugField()
6060
label = fields.CharField()
61-
help_text = fields.CharField(required=False)
61+
description = fields.CharField(required=False, source='help_text')
6262
placehorlder = fields.CharField(required=False)
6363
types = fields.ListField()
6464

0 commit comments

Comments
 (0)