Source code for utils.pagination
from typing import Any
from rest_framework import pagination, status
from rest_framework.exceptions import NotFound
from rest_framework.request import Request
from rest_framework.response import Response
from rest_framework.views import APIView
[docs]
class WdaePageNumberPagination(pagination.PageNumberPagination):
"""Custom pagination class that handles empty pages."""
[docs]
def paginate_queryset(
self,
queryset: Any,
request: Request,
view: APIView | None = None,
) -> list[Any] | None:
"""Paginate and handle empty pages by returning 204."""
try:
result: list[Any] | None = super().paginate_queryset(
queryset, request, view=view,
)
except NotFound:
return []
return result
[docs]
def get_paginated_response(self, data: list[Any]) -> Response:
if len(data) == 0:
return Response(status=status.HTTP_204_NO_CONTENT)
return Response(data)