Skip to content

Commit 37d97c0

Browse files
committed
Use DRF 3.1 pagination_class
1 parent b12e188 commit 37d97c0

File tree

2 files changed

+19
-7
lines changed

2 files changed

+19
-7
lines changed

readthedocs/restapi/utils.py

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@
44
import hashlib
55
import logging
66

7+
from rest_framework.pagination import PageNumberPagination
8+
79
from readthedocs.builds.constants import NON_REPOSITORY_VERSIONS
810
from readthedocs.builds.models import Version
911
from readthedocs.search.indexes import PageIndex, ProjectIndex, SectionIndex
@@ -167,3 +169,16 @@ def index_search_request(version, page_list, commit, project_scale, page_scale,
167169
}
168170
}
169171
page_obj.delete_document(body=delete_query)
172+
173+
174+
class RemoteOrganizationPagination(PageNumberPagination):
175+
page_size = 25
176+
177+
178+
class RemoteProjectPagination(PageNumberPagination):
179+
page_size = 15
180+
181+
182+
class ProjectPagination(PageNumberPagination):
183+
page_size = 100
184+
max_page_size = 1000

readthedocs/restapi/views/model_views.py

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,7 @@ class ProjectViewSet(UserSelectViewSet):
6464
serializer_class = ProjectSerializer
6565
admin_serializer_class = ProjectAdminSerializer
6666
model = Project
67-
paginate_by = 100
68-
paginate_by_param = 'page_size'
69-
max_paginate_by = 1000
67+
pagination_class = api_utils.ProjectPagination
7068

7169
@decorators.detail_route()
7270
def valid_versions(self, request, **kwargs):
@@ -241,7 +239,8 @@ class RemoteOrganizationViewSet(viewsets.ReadOnlyModelViewSet):
241239
renderer_classes = (JSONRenderer,)
242240
serializer_class = RemoteOrganizationSerializer
243241
model = RemoteOrganization
244-
paginate_by = 25
242+
pagination_class = api_utils.RemoteOrganizationPagination
243+
245244

246245
def get_queryset(self):
247246
return (self.model.objects.api(self.request.user)
@@ -254,6 +253,7 @@ class RemoteRepositoryViewSet(viewsets.ReadOnlyModelViewSet):
254253
renderer_classes = (JSONRenderer,)
255254
serializer_class = RemoteRepositorySerializer
256255
model = RemoteRepository
256+
pagination_class = api_utils.RemoteProjectPagination
257257

258258
def get_queryset(self):
259259
query = self.model.objects.api(self.request.user)
@@ -263,6 +263,3 @@ def get_queryset(self):
263263
query = query.filter(account__provider__in=[service.adapter.provider_id
264264
for service in registry])
265265
return query
266-
267-
def get_paginate_by(self):
268-
return self.request.query_params.get('page_size', 25)

0 commit comments

Comments
 (0)