From 09edaf50edbffaa9ed7013a6688184e7d2c83625 Mon Sep 17 00:00:00 2001 From: Warren Jin Date: Sun, 25 Jan 2015 23:05:21 -0500 Subject: [PATCH 1/2] fixed tests --- rest_framework/fields.py | 11 +++++++++-- tests/test_fields.py | 12 ++++++------ 2 files changed, 15 insertions(+), 8 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index a74ce0d78..4366bdc3e 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1196,6 +1196,7 @@ class HiddenField(Field): def to_internal_value(self, data): return data + class RecursiveField(Field): """ A field that gets its representation from its parent. @@ -1208,13 +1209,18 @@ class RecursiveField(Field): Above all, beware of cyclical references. Examples: - + class TreeSerializer(self): children = ListField(child=RecursiveField()) class ListSerializer(self): - next = RecursiveField(allow_null=True) + next = RecursiveField() """ + + def __init__(self, *args, **kwargs): + kwargz = {'required': False} + kwargz.update(kwargs) + super(RecursiveField, self).__init__(*args, **kwargz) def _get_parent(self): if hasattr(self.parent, 'child') and self.parent.child is self: @@ -1229,6 +1235,7 @@ class RecursiveField(Field): def to_internal_value(self, data): return self._get_parent().to_internal_value(data) + class SerializerMethodField(Field): """ A read-only field that get its representation from calling a method on the diff --git a/tests/test_fields.py b/tests/test_fields.py index eb0dab875..6e7bee4c1 100644 --- a/tests/test_fields.py +++ b/tests/test_fields.py @@ -312,7 +312,7 @@ class TestRecursiveField: 'name': 'first', 'next': { 'name': 'second', - 'next':{ + 'next': { 'name': 'third', 'next': None, } @@ -327,17 +327,17 @@ class TestRecursiveField: # test deserialization serializer = self.link_serializer(data=value) assert serializer.is_valid(), \ - 'cannot validate on deserialization' + 'cannot validate on deserialization: %s' % dict(serializer.errors) assert serializer.validated_data == value, \ 'deserialized data does not match input' def test_node_serializer(self): value = { - 'name': 'root', + 'name': 'root', 'children': [{ 'name': 'first child', 'children': [], - },{ + }, { 'name': 'second child', 'children': [], }] @@ -349,9 +349,9 @@ class TestRecursiveField: 'serialized data does not match input' # deserialization - serializer = self.link_serializer(data=value) + serializer = self.node_serializer(data=value) assert serializer.is_valid(), \ - 'cannot validate on deserialization' + 'cannot validate on deserialization: %s' % dict(serializer.errors) assert serializer.validated_data == value, \ 'deserialized data does not match input' From cedfe4f33081b1ec0e90ab823d1a36a5bd21b57b Mon Sep 17 00:00:00 2001 From: Warren Jin Date: Sun, 25 Jan 2015 23:06:58 -0500 Subject: [PATCH 2/2] flake ugh --- rest_framework/fields.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/rest_framework/fields.py b/rest_framework/fields.py index 4366bdc3e..a63dbe919 100644 --- a/rest_framework/fields.py +++ b/rest_framework/fields.py @@ -1216,7 +1216,7 @@ class RecursiveField(Field): class ListSerializer(self): next = RecursiveField() """ - + def __init__(self, *args, **kwargs): kwargz = {'required': False} kwargz.update(kwargs) @@ -1228,7 +1228,7 @@ class RecursiveField(Field): return self.parent.parent else: return self.parent - + def to_representation(self, value): return self._get_parent().to_representation(value)