Skip to content
Snippets Groups Projects
pagination.py 979 B
Newer Older
  • Learn to ignore specific revisions
  • from rest_framework.pagination import PageNumberPagination, _positive_int
    
    
    
    class FunkwhalePagination(PageNumberPagination):
    
    Eliot Berriot's avatar
    Eliot Berriot committed
        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