This commit is contained in:
kelsoncm 2017-04-27 11:39:49 +00:00 committed by GitHub
commit 6b5f1d0d1e
2 changed files with 8 additions and 4 deletions

View File

@ -201,6 +201,7 @@ class PageNumberPagination(BasePagination):
Paginate a queryset if required, either returning a Paginate a queryset if required, either returning a
page object, or `None` if pagination is not configured for this view. page object, or `None` if pagination is not configured for this view.
""" """
self.view_page_size = getattr(view, 'page_size', None)
page_size = self.get_page_size(request) page_size = self.get_page_size(request)
if not page_size: if not page_size:
return None return None
@ -244,7 +245,7 @@ class PageNumberPagination(BasePagination):
except (KeyError, ValueError): except (KeyError, ValueError):
pass pass
return self.page_size return self.view_page_size or self.page_size
def get_next_link(self): def get_next_link(self):
if not self.page.has_next(): if not self.page.has_next():
@ -332,6 +333,7 @@ class LimitOffsetPagination(BasePagination):
template = 'rest_framework/pagination/numbers.html' template = 'rest_framework/pagination/numbers.html'
def paginate_queryset(self, queryset, request, view=None): def paginate_queryset(self, queryset, request, view=None):
self.view_limit = getattr(view, 'limit', None)
self.limit = self.get_limit(request) self.limit = self.get_limit(request)
if self.limit is None: if self.limit is None:
return None return None
@ -365,7 +367,7 @@ class LimitOffsetPagination(BasePagination):
except (KeyError, ValueError): except (KeyError, ValueError):
pass pass
return self.default_limit return self.view_limit or self.default_limit
def get_offset(self, request): def get_offset(self, request):
try: try:
@ -479,7 +481,7 @@ class CursorPagination(BasePagination):
cursor_query_description = _('The pagination cursor value.') cursor_query_description = _('The pagination cursor value.')
page_size = api_settings.PAGE_SIZE page_size = api_settings.PAGE_SIZE
invalid_cursor_message = _('Invalid cursor') invalid_cursor_message = _('Invalid cursor')
ordering = '-created' ordering = api_settings.ORDERING
template = 'rest_framework/pagination/previous_and_next.html' template = 'rest_framework/pagination/previous_and_next.html'
# The offset in the cursor is used in situations where we have a # The offset in the cursor is used in situations where we have a
@ -494,6 +496,7 @@ class CursorPagination(BasePagination):
return None return None
self.base_url = request.build_absolute_uri() self.base_url = request.build_absolute_uri()
self.view_ordering = getattr(view, 'ordering', None)
self.ordering = self.get_ordering(request, queryset, view) self.ordering = self.get_ordering(request, queryset, view)
self.cursor = self.decode_cursor(request) self.cursor = self.decode_cursor(request)
@ -688,7 +691,7 @@ class CursorPagination(BasePagination):
else: else:
# The default case is to check for an `ordering` attribute # The default case is to check for an `ordering` attribute
# on this pagination instance. # on this pagination instance.
ordering = self.ordering ordering = self.view_ordering or self.ordering
assert ordering is not None, ( assert ordering is not None, (
'Using cursor pagination, but no ordering attribute was declared ' 'Using cursor pagination, but no ordering attribute was declared '
'on the pagination class.' 'on the pagination class.'

View File

@ -63,6 +63,7 @@ DEFAULTS = {
# Pagination # Pagination
'PAGE_SIZE': None, 'PAGE_SIZE': None,
'ORDERING': '-created',
# Filtering # Filtering
'SEARCH_PARAM': 'search', 'SEARCH_PARAM': 'search',