saas-market-analysis-dubai/apps/core/pagination.py
2025-09-17 03:04:22 +05:30

47 lines
1.3 KiB
Python

"""
Custom pagination classes for the API.
"""
from rest_framework.pagination import PageNumberPagination
from rest_framework.response import Response
class StandardResultsSetPagination(PageNumberPagination):
"""
Standard pagination for API responses.
"""
page_size = 50
page_size_query_param = 'page_size'
max_page_size = 1000
def get_paginated_response(self, data):
return Response({
'count': self.page.paginator.count,
'next': self.get_next_link(),
'previous': self.get_previous_link(),
'results': data,
'page': self.page.number,
'pages': self.page.paginator.num_pages,
'page_size': self.page_size,
})
class LargeResultsSetPagination(PageNumberPagination):
"""
Pagination for large datasets (e.g., transactions).
"""
page_size = 100
page_size_query_param = 'page_size'
max_page_size = 5000
def get_paginated_response(self, data):
return Response({
'count': self.page.paginator.count,
'next': self.get_next_link(),
'previous': self.get_previous_link(),
'results': data,
'page': self.page.number,
'pages': self.page.paginator.num_pages,
'page_size': self.page_size,
})