kopia lustrzana https://dev.funkwhale.audio/funkwhale/funkwhale
30 wiersze
979 B
Python
30 wiersze
979 B
Python
from rest_framework.pagination import PageNumberPagination, _positive_int
|
|
|
|
|
|
class FunkwhalePagination(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
|