mirror of
https://github.com/ansible/awx.git
synced 2026-01-18 21:21:21 -03:30
38 lines
1.3 KiB
Python
38 lines
1.3 KiB
Python
# Copyright (c) 2014 AnsibleWorks, Inc.
|
|
# All Rights Reserved.
|
|
|
|
# Django REST Framework
|
|
from rest_framework import serializers, pagination
|
|
from rest_framework.templatetags.rest_framework import replace_query_param
|
|
|
|
class NextPageField(pagination.NextPageField):
|
|
'''Pagination field to output URL path.'''
|
|
|
|
def to_native(self, value):
|
|
if not value.has_next():
|
|
return None
|
|
page = value.next_page_number()
|
|
request = self.context.get('request')
|
|
url = request and request.get_full_path() or ''
|
|
return replace_query_param(url, self.page_field, page)
|
|
|
|
class PreviousPageField(pagination.NextPageField):
|
|
'''Pagination field to output URL path.'''
|
|
|
|
def to_native(self, value):
|
|
if not value.has_previous():
|
|
return None
|
|
page = value.previous_page_number()
|
|
request = self.context.get('request')
|
|
url = request and request.get_full_path() or ''
|
|
return replace_query_param(url, self.page_field, page)
|
|
|
|
class PaginationSerializer(pagination.BasePaginationSerializer):
|
|
'''
|
|
Custom pagination serializer to output only URL path (without host/port).
|
|
'''
|
|
|
|
count = serializers.Field(source='paginator.count')
|
|
next = NextPageField(source='*')
|
|
previous = PreviousPageField(source='*')
|