Skip to content

Commit 91d8633

Browse files
authored
Merge pull request #356 from peopledoc/form-filler-extra-fields
fields parameters are not the write-only anymore
2 parents 50c6438 + 5810625 commit 91d8633

File tree

4 files changed

+8
-4
lines changed

4 files changed

+8
-4
lines changed

CHANGELOG.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ master (unreleased)
1212
- Change the global exception handling error level, from "error" to "exception". It'll provide better insights if you're using Logmatic or any other logging aggregator (#336).
1313
- Skip `tox` installation in the circle-ci environment: it's already there (#344).
1414
- Refactoring of the field builder (Use only one module for the form builder factory) (#347).
15+
- Add `parameters` to the fields schema
1516

1617
Release 2.1.2 (2018-08-29)
1718
==========================

demo/requirements-demo.pip

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,5 @@ django-perf-rec
66
mock
77
# added a typing module to fix https://github.com/django-extensions/django-extensions/issues/1176
88
typing
9+
# A temporary workaround for DRF-related error:
10+
Markdown~=2.6

demo/tests/serializers/test_formidable_serializer.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ def test_custom_field_serialize(self):
7878
# test serialized data
7979
self.assertIn('meta_info', data)
8080
self.assertIn('some_another_data', data)
81-
self.assertNotIn('parameters', data)
81+
self.assertIn('parameters', data)
8282
# remove instance
8383
self.instance.delete()
8484

formidable/serializers/fields.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ class FieldSerializer(WithNestedSerializer):
114114
# redefine here the order field just to take it at the save/update time
115115
# The order is automatically calculated, if the order is define in
116116
# incoming payload, it will be automatically overridden.
117-
parameters = serializers.JSONField(write_only=True)
117+
parameters = serializers.JSONField()
118118
order = serializers.IntegerField(write_only=True, required=False)
119119
defaults = DefaultSerializer(many=True, required=False)
120120
description = serializers.CharField(required=False, allow_null=True,
@@ -126,7 +126,9 @@ def to_internal_value(self, data):
126126
if 'help_text' in data:
127127
data['description'] = data.pop('help_text')
128128

129-
data['parameters'] = {}
129+
if not data.get('parameters'):
130+
data['parameters'] = {}
131+
130132
for config_field in self.get_config_fields():
131133
data['parameters'][config_field] = data.pop(config_field, None)
132134

@@ -137,7 +139,6 @@ def to_representation(self, instance):
137139
for config_field in self.get_config_fields():
138140
if instance.parameters is not None:
139141
field[config_field] = instance.parameters.get(config_field)
140-
field.pop('parameters', None)
141142
return field
142143

143144
def get_config_fields(self):

0 commit comments

Comments
 (0)