Skip to content

Commit

Permalink
Merge pull request #24 from dealertrack/swap
Browse files Browse the repository at this point in the history
added ListSerializer to SwappingSerializerMixin
  • Loading branch information
miki725 committed Nov 7, 2018
2 parents 6c1763b + cf8f982 commit 09d77f1
Show file tree
Hide file tree
Showing 4 changed files with 13 additions and 3 deletions.
6 changes: 6 additions & 0 deletions HISTORY.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,13 @@
History
-------

0.3.1 (2018-11-07)
~~~~~~~~~~~~~~~~~~

* Fixing ``SwappingSerializerMixin`` by supporting ``ListSerializer``

0.3.0 (2018-11-05)
~~~~~~~~~~~~~~~~~~

* Added ``SwappingSerializerMixin``.
Allows to declaratively swap fields any field instances in child serializers.
Expand Down
2 changes: 1 addition & 1 deletion drf_braces/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,4 +4,4 @@

__author__ = 'Miroslav Shubernetskiy'
__email__ = 'miroslav@miki725.com'
__version__ = '0.3.0'
__version__ = '0.3.1'
6 changes: 4 additions & 2 deletions drf_braces/serializers/swapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
from __future__ import absolute_import, print_function, unicode_literals
import copy

from rest_framework.serializers import BaseSerializer
from rest_framework.serializers import BaseSerializer, ListSerializer


class SwappingSerializerMixin(BaseSerializer):
Expand Down Expand Up @@ -33,7 +33,9 @@ def swap_fields(self, serializer):
new_field = self.swap_field(field)
if new_field is not field:
serializer.fields[name] = new_field
if isinstance(new_field, BaseSerializer):
if isinstance(new_field, ListSerializer):
self.swap_fields(new_field.child)
elif isinstance(new_field, BaseSerializer):
self.swap_fields(new_field)
return serializer

Expand Down
2 changes: 2 additions & 0 deletions drf_braces/tests/serializers/test_swapping.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@ class ParentSerializer(serializers.Serializer):

class GrandParentSerializer(serializers.Serializer):
parent = ParentSerializer()
parents = ParentSerializer(many=True)


class TestSwappingSerializerMixin(unittest.TestCase):
Expand All @@ -36,3 +37,4 @@ class Meta(object):
swapped = Swappable()

self.assertIsInstance(swapped.fields['parent'].fields['child'], ChildAlternativeSerializer)
self.assertIsInstance(swapped.fields['parents'].child.fields['child'], ChildAlternativeSerializer)

0 comments on commit 09d77f1

Please sign in to comment.