From 65f552d880e30eeb1c00bfee4c9a15f9a0c6c471 Mon Sep 17 00:00:00 2001 From: Tom Christie Date: Thu, 11 Aug 2016 11:13:55 +0100 Subject: [PATCH] Test case should ensure view.request exists. --- rest_framework/schemas.py | 7 +++---- tests/test_schemas.py | 4 ++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/rest_framework/schemas.py b/rest_framework/schemas.py index 52fcdba7c..28f5dc8a1 100644 --- a/rest_framework/schemas.py +++ b/rest_framework/schemas.py @@ -263,19 +263,18 @@ class SchemaGenerator(object): if method not in ('PUT', 'PATCH', 'POST'): return [] - if not hasattr(view, 'get_serializer_class'): + if not hasattr(view, 'get_serializer'): return [] - fields = [] - serializer = view.get_serializer() if isinstance(serializer, serializers.ListSerializer): - return coreapi.Field(name='data', location='body', required=True) + return [coreapi.Field(name='data', location='body', required=True)] if not isinstance(serializer, serializers.Serializer): return [] + fields = [] for field in serializer.fields.values(): if field.read_only: continue diff --git a/tests/test_schemas.py b/tests/test_schemas.py index 6c02c9d23..d8c0f2209 100644 --- a/tests/test_schemas.py +++ b/tests/test_schemas.py @@ -43,6 +43,10 @@ class ExampleViewSet(ModelViewSet): def custom_action(self, request, pk): return super(ExampleSerializer, self).retrieve(self, request) + def get_serializer(self, *args, **kwargs): + assert self.request + return super(ExampleViewSet, self).get_serializer(*args, **kwargs) + class ExampleView(APIView): permission_classes = [permissions.IsAuthenticatedOrReadOnly]