From 21823ec5d22a285fde7e16280e9fd1c231d9c283 Mon Sep 17 00:00:00 2001 From: Scott Fisk Date: Fri, 8 Apr 2016 17:06:11 -0400 Subject: [PATCH] Fixed get_resource_name in case of non-model backed serializer. Closes #219 --- example/tests/unit/test_utils.py | 10 ++++++++++ rest_framework_json_api/utils.py | 8 ++++---- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/example/tests/unit/test_utils.py b/example/tests/unit/test_utils.py index 14ebd202..39d57428 100644 --- a/example/tests/unit/test_utils.py +++ b/example/tests/unit/test_utils.py @@ -15,6 +15,11 @@ pytestmark = pytest.mark.django_db +class NonModelResourceSerializer(serializers.Serializer): + class Meta: + resource_name = 'users' + + class ResourceSerializer(serializers.ModelSerializer): class Meta: fields = ('username',) @@ -51,6 +56,11 @@ def test_get_resource_name(): view.serializer_class.Meta.resource_name = 'rcustom' assert 'rcustom' == utils.get_resource_name(context), 'set on serializer' + view = GenericAPIView() + view.serializer_class = NonModelResourceSerializer + context = {'view': view} + assert 'users' == utils.get_resource_name(context), 'derived from non-model serializer' + def test_format_keys(): underscored = { diff --git a/rest_framework_json_api/utils.py b/rest_framework_json_api/utils.py index d8a4e67a..e0bc5740 100644 --- a/rest_framework_json_api/utils.py +++ b/rest_framework_json_api/utils.py @@ -214,10 +214,10 @@ def get_resource_type_from_manager(manager): def get_resource_type_from_serializer(serializer): - return getattr( - serializer.Meta, - 'resource_name', - get_resource_type_from_model(serializer.Meta.model)) + if hasattr(serializer.Meta, 'resource_name'): + return serializer.Meta.resource_name + else: + return get_resource_type_from_model(serializer.Meta.model) def get_included_serializers(serializer):