38 lines
1.3 KiB
Python
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)),
|
|
]
|
|
),
|
|
}
|
|
)
|