From e981ddc654a2706d09b95d5262d7a13529d7b566 Mon Sep 17 00:00:00 2001 From: Paul Bailey Date: Thu, 6 Oct 2016 16:13:33 -0400 Subject: [PATCH 1/3] added paginated_response for functional views --- rest_framework/generics.py | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/rest_framework/generics.py b/rest_framework/generics.py index 3ee569109..6c7167b7a 100644 --- a/rest_framework/generics.py +++ b/rest_framework/generics.py @@ -8,6 +8,7 @@ from django.http import Http404 from django.shortcuts import get_object_or_404 as _get_object_or_404 from rest_framework import mixins, views +from rest_framework.response import Response from rest_framework.settings import api_settings @@ -290,3 +291,19 @@ class RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin, def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs) + +def paginated_response(request, queryset, serializer_class, pagination_class=None, **kwargs): + if pagination_class is None: + pagination_class = api_settings.DEFAULT_PAGINATION_CLASS + + paginator = pagination_class() + for attr, value in kwargs.items(): + setattr(paginator, attr, value) + + page = paginator.paginate_queryset(queryset, request) + if page is None: + serializer = serializer_class(queryset, many=True) + return Response(serializer.data) + + serializer = serializer_class(page, many=True) + return paginator.get_paginated_response(serializer.data) From 0a6a23d7510ec7868be6c99d9d39854b02841bb0 Mon Sep 17 00:00:00 2001 From: Paul Bailey Date: Thu, 6 Oct 2016 16:37:10 -0400 Subject: [PATCH 2/3] fixed pep8 --- rest_framework/generics.py | 1 + 1 file changed, 1 insertion(+) diff --git a/rest_framework/generics.py b/rest_framework/generics.py index 6c7167b7a..480786632 100644 --- a/rest_framework/generics.py +++ b/rest_framework/generics.py @@ -307,3 +307,4 @@ def paginated_response(request, queryset, serializer_class, pagination_class=Non serializer = serializer_class(page, many=True) return paginator.get_paginated_response(serializer.data) + From 9461716c740a00813025fabc173c1314fd450f2b Mon Sep 17 00:00:00 2001 From: Paul Bailey Date: Thu, 6 Oct 2016 16:38:28 -0400 Subject: [PATCH 3/3] fixed pep8 --- rest_framework/generics.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/rest_framework/generics.py b/rest_framework/generics.py index 480786632..72cfc7bf8 100644 --- a/rest_framework/generics.py +++ b/rest_framework/generics.py @@ -292,6 +292,7 @@ class RetrieveUpdateDestroyAPIView(mixins.RetrieveModelMixin, def delete(self, request, *args, **kwargs): return self.destroy(request, *args, **kwargs) + def paginated_response(request, queryset, serializer_class, pagination_class=None, **kwargs): if pagination_class is None: pagination_class = api_settings.DEFAULT_PAGINATION_CLASS @@ -307,4 +308,3 @@ def paginated_response(request, queryset, serializer_class, pagination_class=Non serializer = serializer_class(page, many=True) return paginator.get_paginated_response(serializer.data) -