FEAT: Modernized to support latest Pythons and DRF JSONAPI

This commit is contained in:
2026-08-23 12:33:13 +02:00
parent 533789645a
commit ddcf8fb039
22 changed files with 718 additions and 138 deletions
+19 -21
View File
@@ -1,37 +1,35 @@
from collections import OrderedDict
"""Pagination adapters for clients built with ngx-jsonapi."""
from rest_framework.response import Response
from rest_framework_json_api.pagination import JsonApiPageNumberPagination
class NgxJsonApiPageNumberPagination(JsonApiPageNumberPagination):
"""Expose page-number metadata in the shape expected by ngx-jsonapi."""
def get_paginated_response(self, data):
next = None
previous = None
next_page = None
previous_page = None
if self.page.has_next():
next = self.page.next_page_number()
next_page = self.page.next_page_number()
if self.page.has_previous():
previous = self.page.previous_page_number()
previous_page = 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)),
]
),
"meta": {
"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": {
"first": self.build_link(1),
"last": self.build_link(self.page.paginator.num_pages),
"next": self.build_link(next_page),
"prev": self.build_link(previous_page),
},
}
)