aboutsummaryrefslogtreecommitdiffstats
path: root/pydis_site/apps/api/viewsets
diff options
context:
space:
mode:
authorGravatar Kunal Sharma <[email protected]>2021-02-26 13:10:05 +0530
committerGravatar Kunal Sharma <[email protected]>2021-02-26 13:10:05 +0530
commit4a5fa2d3c8e0aa2d71e13d15ca7b31ef46535001 (patch)
treef3d38981884df9263dc82fb1ada4862f0a595a12 /pydis_site/apps/api/viewsets
parentAdd custom paginator class to override default resonse (diff)
Update pagination docs and pagination class location
Diffstat (limited to 'pydis_site/apps/api/viewsets')
-rw-r--r--pydis_site/apps/api/viewsets/bot/infraction.py11
-rw-r--r--pydis_site/apps/api/viewsets/bot/pagination.py12
2 files changed, 6 insertions, 17 deletions
diff --git a/pydis_site/apps/api/viewsets/bot/infraction.py b/pydis_site/apps/api/viewsets/bot/infraction.py
index 2b0bbf3e..1bf89203 100644
--- a/pydis_site/apps/api/viewsets/bot/infraction.py
+++ b/pydis_site/apps/api/viewsets/bot/infraction.py
@@ -13,11 +13,11 @@ from rest_framework.response import Response
from rest_framework.viewsets import GenericViewSet
from pydis_site.apps.api.models.bot.infraction import Infraction
+from pydis_site.apps.api.pagination import LimitOffsetPaginationExtended
from pydis_site.apps.api.serializers import (
ExpandedInfractionSerializer,
InfractionSerializer
)
-from pydis_site.apps.api.viewsets.bot.pagination import LimitSetPagination
class InfractionViewSet(
@@ -39,8 +39,8 @@ class InfractionViewSet(
- **active** `bool`: whether the infraction is still active
- **actor__id** `int`: snowflake of the user which applied the infraction
- **hidden** `bool`: whether the infraction is a shadow infraction
- - **limit** `int`: default limit is 100
- - **offset** `int`: default is 0
+ - **limit** `int`: number of results return per page. default limit is 100
+ - **offset** `int`: the initial index from which to return the results, default is 0
- **search** `str`: regular expression applied to the infraction's reason
- **type** `str`: the type of the infraction
- **user__id** `int`: snowflake of the user to which the infraction was applied
@@ -49,7 +49,8 @@ class InfractionViewSet(
Invalid query parameters are ignored.
#### Response format
- - Response are paginated but only the actual data is returned
+ - Response are paginated but the result is returned without any pagination metadata.
+ Below is the returned format.
>>> [
... {
... 'id': 5,
@@ -137,7 +138,7 @@ class InfractionViewSet(
serializer_class = InfractionSerializer
queryset = Infraction.objects.all()
- pagination_class = LimitSetPagination
+ pagination_class = LimitOffsetPaginationExtended
filter_backends = (DjangoFilterBackend, SearchFilter, OrderingFilter)
filter_fields = ('user__id', 'actor__id', 'active', 'hidden', 'type')
search_fields = ('$reason',)
diff --git a/pydis_site/apps/api/viewsets/bot/pagination.py b/pydis_site/apps/api/viewsets/bot/pagination.py
deleted file mode 100644
index f9a8ccae..00000000
--- a/pydis_site/apps/api/viewsets/bot/pagination.py
+++ /dev/null
@@ -1,12 +0,0 @@
-from rest_framework.pagination import LimitOffsetPagination
-from rest_framework.response import Response
-
-
-class LimitSetPagination(LimitOffsetPagination):
- """Extend LimitOffsetPagination."""
-
- default_limit = 100
-
- def get_paginated_response(self, data: list) -> Response:
- """Override default response."""
- return Response(data)