Files
enhanced-drf-jsonapi/enhanced_drf_jsonapi/pagination.py
2024-05-20 19:10:57 +02:00

38 lines
1.3 KiB
Python

from collections import OrderedDict
from rest_framework.response import Response
from rest_framework_json_api.pagination import JsonApiPageNumberPagination
class NgxJsonApiPageNumberPagination(JsonApiPageNumberPagination):
def get_paginated_response(self, data):
next = None
previous = None
if self.page.has_next():
next = self.page.next_page_number()
if self.page.has_previous():
previous = self.page.previous_page_number()
return Response(
{
"results": data,
"meta": OrderedDict(
[
("page", self.page.number),
("pages", self.page.paginator.num_pages),
("total_resources", self.page.paginator.count),
("resources_per_page", self.page.paginator.per_page),
]
),
"links": OrderedDict(
[
("first", self.build_link(1)),
("last", self.build_link(self.page.paginator.num_pages)),
("next", self.build_link(next)),
("prev", self.build_link(previous)),
]
),
}
)