funquail/api/funkwhale_api/common/pagination.py
Shin'ya Minazuki 01bb65f8da 発散解像度 -divergence resolution-
Signed-off-by: Shin'ya Minazuki <shinyoukai@laidback.moe>
2026-01-25 22:47:30 +01:00

29 lines
978 B
Python

from rest_framework.pagination import PageNumberPagination, _positive_int
class FunQuailPagination(PageNumberPagination):
page_size_query_param = "page_size"
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