Merge pull request #3147 from tomchristie/uploadcare-cursor-limits

Add `get_page_size` hook to `CursorPagination`
This commit is contained in:
Tom Christie 2015-07-14 12:44:13 +01:00
commit 9c952dcfe9

View File

@ -455,7 +455,8 @@ class CursorPagination(BasePagination):
template = 'rest_framework/pagination/previous_and_next.html'
def paginate_queryset(self, queryset, request, view=None):
if self.page_size is None:
page_size = self.get_page_size(request)
if not page_size:
return None
self.base_url = request.build_absolute_uri()
@ -490,8 +491,8 @@ class CursorPagination(BasePagination):
# If we have an offset cursor then offset the entire page by that amount.
# We also always fetch an extra item in order to determine if there is a
# page following on from this one.
results = list(queryset[offset:offset + self.page_size + 1])
self.page = list(results[:self.page_size])
results = list(queryset[offset:offset + page_size + 1])
self.page = list(results[:page_size])
# Determine the position of the final item following the page.
if len(results) > len(self.page):
@ -530,6 +531,9 @@ class CursorPagination(BasePagination):
return self.page
def get_page_size(self, request):
return self.page_size
def get_next_link(self):
if not self.has_next:
return None