Skip to content

Commit 24b2652

Browse files
committed
Remove ordering filter class handling
These filters are already applied by GenericAPIView.filter_queryset()
1 parent 9323905 commit 24b2652

File tree

2 files changed

+2
-54
lines changed

2 files changed

+2
-54
lines changed

rest_framework/pagination.py

Lines changed: 2 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -615,7 +615,7 @@ def paginate_queryset(self, queryset, request, view=None):
615615
return None
616616

617617
self.base_url = request.build_absolute_uri()
618-
self.ordering = self.get_ordering(request, queryset, view)
618+
self.ordering = self.get_ordering()
619619

620620
self.cursor = self.decode_cursor(request)
621621
if self.cursor is None:
@@ -802,28 +802,12 @@ def get_previous_link(self):
802802
cursor = Cursor(offset=offset, reverse=True, position=position)
803803
return self.encode_cursor(cursor)
804804

805-
def get_ordering(self, request, queryset, view):
805+
def get_ordering(self):
806806
"""
807807
Return a tuple of strings, that may be used in an `order_by` method.
808808
"""
809-
# The default case is to check for an `ordering` attribute
810-
# on this pagination instance.
811809
ordering = self.ordering
812810

813-
ordering_filters = [
814-
filter_cls for filter_cls in getattr(view, 'filter_backends', [])
815-
if hasattr(filter_cls, 'get_ordering')
816-
]
817-
818-
if ordering_filters:
819-
# If a filter exists on the view that implements `get_ordering`
820-
# then we defer to that filter to determine the ordering.
821-
filter_cls = ordering_filters[0]
822-
filter_instance = filter_cls()
823-
ordering_from_filter = filter_instance.get_ordering(request, queryset, view)
824-
if ordering_from_filter:
825-
ordering = ordering_from_filter
826-
827811
assert ordering is not None, (
828812
'Using cursor pagination, but no ordering attribute was declared '
829813
'on the pagination class.'

tests/test_pagination.py

Lines changed: 0 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -616,42 +616,6 @@ def test_invalid_cursor(self):
616616
with pytest.raises(exceptions.NotFound):
617617
self.pagination.paginate_queryset(self.queryset, request)
618618

619-
def test_use_with_ordering_filter(self):
620-
class MockView:
621-
filter_backends = (filters.OrderingFilter,)
622-
ordering_fields = ['username', 'created']
623-
ordering = 'created'
624-
625-
request = Request(factory.get('/', {'ordering': 'username'}))
626-
ordering = self.pagination.get_ordering(request, [], MockView())
627-
assert ordering == ('username',)
628-
629-
request = Request(factory.get('/', {'ordering': '-username'}))
630-
ordering = self.pagination.get_ordering(request, [], MockView())
631-
assert ordering == ('-username',)
632-
633-
request = Request(factory.get('/', {'ordering': 'invalid'}))
634-
ordering = self.pagination.get_ordering(request, [], MockView())
635-
assert ordering == ('created',)
636-
637-
def test_use_with_ordering_filter_without_ordering_default_value(self):
638-
class MockView:
639-
filter_backends = (filters.OrderingFilter,)
640-
ordering_fields = ['username', 'created']
641-
642-
request = Request(factory.get('/'))
643-
ordering = self.pagination.get_ordering(request, [], MockView())
644-
# it gets the value of `ordering` provided by CursorPagination
645-
assert ordering == ('created',)
646-
647-
request = Request(factory.get('/', {'ordering': 'username'}))
648-
ordering = self.pagination.get_ordering(request, [], MockView())
649-
assert ordering == ('username',)
650-
651-
request = Request(factory.get('/', {'ordering': 'invalid'}))
652-
ordering = self.pagination.get_ordering(request, [], MockView())
653-
assert ordering == ('created',)
654-
655619
def test_cursor_pagination(self):
656620
(previous, current, next, previous_url, next_url) = self.get_pages('/')
657621

0 commit comments

Comments
 (0)