setup a base for pagination shieeet
This commit is contained in:
parent
a33f46b477
commit
9a22e5aef0
54
settings/puckignation.py
Normal file
54
settings/puckignation.py
Normal file
@ -0,0 +1,54 @@
|
||||
from rest_framework.pagination import LimitOffsetPagination
|
||||
from rest_framework.response import Response
|
||||
|
||||
class PuckignationMixin(LimitOffsetPagination):
|
||||
|
||||
def get_paginated_response(self, data, status=200):
|
||||
return Response({
|
||||
'count': self.count,
|
||||
'next': self.get_next_link(),
|
||||
'previous': self.get_previous_link(),
|
||||
'results': data
|
||||
}, status=status)
|
||||
|
||||
def get_paginated_response_schema(self, schema, *args, **kwargs):
|
||||
return {
|
||||
'type': 'object',
|
||||
'required': ['count', 'results'],
|
||||
'properties': {
|
||||
'count': {
|
||||
'type': 'integer',
|
||||
'example': 123,
|
||||
},
|
||||
'next': {
|
||||
'type': 'string',
|
||||
'nullable': True,
|
||||
'format': 'uri',
|
||||
'example': 'http://pfapi.puckoprutt.tech/actions/?format=yaml&{offset_param}=30&{limit_param}=10'.format(
|
||||
offset_param=self.offset_query_param, limit_param=self.limit_query_param),
|
||||
},
|
||||
'previous': {
|
||||
'type': 'string',
|
||||
'nullable': True,
|
||||
'format': 'uri',
|
||||
'example': 'http://pfapi.puckoprutt.tech/actions/?format=yaml&{offset_param}=10&{limit_param}=10'.format(
|
||||
offset_param=self.offset_query_param, limit_param=self.limit_query_param),
|
||||
},
|
||||
'results': schema,
|
||||
}
|
||||
}
|
||||
|
||||
class SmallPagination(PuckignationMixin):
|
||||
page_size = 10
|
||||
page_size_query_param = "page_size"
|
||||
max_page_size = 25
|
||||
|
||||
class MediumPagination(PuckignationMixin):
|
||||
page_size = 25
|
||||
page_size_query_param = "page_size"
|
||||
max_page_size = 55
|
||||
|
||||
class LargePagination(PuckignationMixin):
|
||||
page_size = 100
|
||||
page_size_query_param = "page_size"
|
||||
max_page_size = 200
|
||||
Loading…
x
Reference in New Issue
Block a user