aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/pagination.py
diff options
context:
space:
mode:
Diffstat (limited to 'pydis_site/apps/api/pagination.py')
-rw-r--r--pydis_site/apps/api/pagination.py49
1 files changed, 49 insertions, 0 deletions
diff --git a/pydis_site/apps/api/pagination.py b/pydis_site/apps/api/pagination.py
new file mode 100644
index 00000000..2a325460
--- /dev/null
+++ b/pydis_site/apps/api/pagination.py
@@ -0,0 +1,49 @@
+import typing
+
+from rest_framework.pagination import LimitOffsetPagination
+from rest_framework.response import Response
+
+
+class LimitOffsetPaginationExtended(LimitOffsetPagination):
+ """
+ Extend LimitOffsetPagination to customise the default response.
+
+ For example:
+
+ ## Default response
+ >>> {
+ ... "count": 1,
+ ... "next": None,
+ ... "previous": None,
+ ... "results": [{
+ ... "id": 6,
+ ... "inserted_at": "2021-01-26T21:13:35.477879Z",
+ ... "expires_at": None,
+ ... "active": False,
+ ... "user": 1,
+ ... "actor": 2,
+ ... "type": "warning",
+ ... "reason": null,
+ ... "hidden": false
+ ... }]
+ ... }
+
+ ## Required response
+ >>> [{
+ ... "id": 6,
+ ... "inserted_at": "2021-01-26T21:13:35.477879Z",
+ ... "expires_at": None,
+ ... "active": False,
+ ... "user": 1,
+ ... "actor": 2,
+ ... "type": "warning",
+ ... "reason": None,
+ ... "hidden": False
+ ... }]
+ """
+
+ default_limit = 100
+
+ def get_paginated_response(self, data: typing.Any) -> Response:
+ """Override to skip metadata i.e. `count`, `next`, and `previous`."""
+ return Response(data)