mirror of
https://code.eliotberriot.com/funkwhale/funkwhale.git
synced 2025-10-04 12:39:23 +02:00
More configurable pagination
This commit is contained in:
parent
b36b03383e
commit
a3ad476c88
4 changed files with 56 additions and 3 deletions
|
@ -1,6 +1,29 @@
|
|||
from rest_framework.pagination import PageNumberPagination
|
||||
from rest_framework.pagination import PageNumberPagination, _positive_int
|
||||
|
||||
|
||||
class FunkwhalePagination(PageNumberPagination):
|
||||
page_size_query_param = "page_size"
|
||||
max_page_size = 50
|
||||
default_max_page_size = 50
|
||||
default_page_size = None
|
||||
view = None
|
||||
|
||||
def paginate_queryset(self, queryset, request, view=None):
|
||||
self.view = view
|
||||
return super().paginate_queryset(queryset, request, view)
|
||||
|
||||
def get_page_size(self, request):
|
||||
max_page_size = (
|
||||
getattr(self.view, "max_page_size", 0) or self.default_max_page_size
|
||||
)
|
||||
page_size = getattr(self.view, "default_page_size", 0) or max_page_size
|
||||
if self.page_size_query_param:
|
||||
try:
|
||||
return _positive_int(
|
||||
request.query_params[self.page_size_query_param],
|
||||
strict=True,
|
||||
cutoff=max_page_size,
|
||||
)
|
||||
except (KeyError, ValueError):
|
||||
pass
|
||||
|
||||
return page_size
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue