Skip to content

Commit 3ac35b6

Browse files
authored
Merge pull request #400 from peopledoc/include-parameters-contextualized-serializer
Include parameters when serializing a form using the ContextFormSerializer
2 parents e10df97 + 3279ec4 commit 3ac35b6

File tree

3 files changed

+35
-4
lines changed

3 files changed

+35
-4
lines changed

CHANGELOG.rst

+1
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ master (unreleased)
99
- Drop support for Django REST Framework 3.8 (#382).
1010
- Fix Postgresql configuration in CircleCI regarding the authentication (#395).
1111
- Small cleanups of Python2-related code.
12+
- Include the property ``parameters`` serializing a form using the ContextFormSerializer.
1213

1314
Release 4.0.2 (2020-02-13)
1415
==========================

demo/tests/serializers/test_formidable_serializer.py

+32-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
from formidable.register import FieldSerializerRegister, load_serializer
44
from formidable.serializers import FormidableSerializer
5+
from formidable.serializers.forms import ContextFormSerializer
56
from formidable.serializers.fields import BASE_FIELDS, FieldSerializer
67

78
import mock
@@ -60,10 +61,10 @@ def test_register(self):
6061

6162
def test_custom_field_serialize(self):
6263
serializer = FormidableSerializer(data=self.schema)
63-
serializer.is_valid()
64+
assert serializer.is_valid()
6465
serializer.save()
6566
# get field instance
66-
self.instance = serializer.instance
67+
instance = serializer.instance
6768
custom_field = serializer.instance.fields.first()
6869
# test field instance
6970
self.assertIn('meta_info', custom_field.parameters)
@@ -80,7 +81,35 @@ def test_custom_field_serialize(self):
8081
self.assertIn('some_another_data', data)
8182
self.assertIn('parameters', data)
8283
# remove instance
83-
self.instance.delete()
84+
instance.delete()
85+
86+
def test_custom_field_serialize_contextserializer(self):
87+
# Create a Formidable form using the schema
88+
serializer = FormidableSerializer(data=self.schema)
89+
assert serializer.is_valid()
90+
serializer.save()
91+
# get form instance
92+
instance = serializer.instance
93+
94+
# Convert it into a "padawan" form
95+
serializer = ContextFormSerializer(
96+
instance, context={'role': 'padawan'}
97+
)
98+
99+
# get field instance
100+
fields = serializer['fields'].value
101+
custom_field = fields[0]
102+
# test field instance
103+
self.assertIn('meta_info', custom_field['parameters'])
104+
self.assertEqual(custom_field["parameters"]['meta_info'], "meta")
105+
self.assertIn('some_another_data', custom_field["parameters"])
106+
self.assertEqual(
107+
custom_field["parameters"]['some_another_data'],
108+
"some_another_data"
109+
)
110+
111+
# remove instance
112+
instance.delete()
84113

85114
def test_context_in_field_serializer(self):
86115
# backup a serializer

formidable/serializers/fields.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -216,14 +216,15 @@ class ContextFieldSerializer(serializers.ModelSerializer):
216216
defaults = DefaultSerializer(many=True, required=False)
217217
description = serializers.CharField(required=False, allow_null=True,
218218
allow_blank=True, source='help_text')
219+
parameters = serializers.JSONField()
219220

220221
class Meta:
221222
list_serializer_class = ListContextFieldSerializer
222223
model = Field
223224
fields = (
224225
'slug', 'label', 'type_id', 'placeholder', 'description',
225226
'validations', 'disabled', 'required', 'multiple', 'items',
226-
'defaults',
227+
'defaults', 'parameters',
227228
)
228229

229230
@property

0 commit comments

Comments
 (0)