diff options
| author | Fernando Rocha | 2013-02-11 19:18:22 -0300 |
|---|---|---|
| committer | Fernando Rocha | 2013-02-11 19:18:22 -0300 |
| commit | ea004b5e7a51ccf176545642692462dc2086056d (patch) | |
| tree | e8de6cdce7965936e053aadbe0ac397bab47191e | |
| parent | 41364b3be0536a606d9b41d3792c2e562b860360 (diff) | |
| download | django-rest-framework-ea004b5e7a51ccf176545642692462dc2086056d.tar.bz2 | |
Make use o issubclass instead of isinstance (fix issue #645)
Because __mro__ is a list of classes and not instances.
DictWithMetadata.__getstate__ was never called
Signed-off-by: Fernando Rocha <fernandogrd@gmail.com>
| -rw-r--r-- | rest_framework/serializers.py | 2 | ||||
| -rw-r--r-- | rest_framework/tests/serializer.py | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/rest_framework/serializers.py b/rest_framework/serializers.py index 4fb802a7..df1e9fae 100644 --- a/rest_framework/serializers.py +++ b/rest_framework/serializers.py @@ -31,7 +31,7 @@ class DictWithMetadata(dict): """ # return an instance of the first dict in MRO that isn't a DictWithMetadata for base in self.__class__.__mro__: - if not isinstance(base, DictWithMetadata) and isinstance(base, dict): + if not issubclass(base, DictWithMetadata) and issubclass(base, dict): return base(self) diff --git a/rest_framework/tests/serializer.py b/rest_framework/tests/serializer.py index 48b4f1ab..4f4508f5 100644 --- a/rest_framework/tests/serializer.py +++ b/rest_framework/tests/serializer.py @@ -870,6 +870,13 @@ class SerializerPickleTests(TestCase): fields = ('name', 'age') pickle.dumps(InnerPersonSerializer(Person(name="Noah", age=950)).data) + def test_getstate_method_should_not_return_none(self): + '''Regression test for + https://github.com/tomchristie/django-rest-framework/issues/645 + ''' + d = serializers.DictWithMetadata({1:1}) + self.assertEqual(d.__getstate__(), serializers.SortedDict({1:1})) + class DepthTest(TestCase): def test_implicit_nesting(self): |
