Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
D
django-rest-framework
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
edx
django-rest-framework
Commits
59905e93
Commit
59905e93
authored
Jul 13, 2015
by
homm
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
revert BasePageSizePagination class and CursorPagination inheritance
parent
30b36a59
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
28 additions
and
31 deletions
+28
-31
rest_framework/pagination.py
+28
-31
No files found.
rest_framework/pagination.py
View file @
59905e93
...
@@ -201,34 +201,7 @@ class BasePagination(object):
...
@@ -201,34 +201,7 @@ class BasePagination(object):
raise
NotImplementedError
(
'to_html() must be implemented to display page controls.'
)
raise
NotImplementedError
(
'to_html() must be implemented to display page controls.'
)
class
BasePageSizePagination
(
BasePagination
):
class
PageNumberPagination
(
BasePagination
):
# The default page size.
# Defaults to `None`, meaning pagination is disabled.
page_size
=
api_settings
.
PAGE_SIZE
# Set to an integer to limit the maximum page size the client may request.
# Only relevant if 'page_size_query_param' has also been set.
max_page_size
=
None
# Client can control the page size using this query parameter.
# Default is 'None'. Set to eg 'page_size' to enable usage.
page_size_query_param
=
None
def
get_page_size
(
self
,
request
):
if
self
.
page_size_query_param
:
try
:
return
_positive_int
(
request
.
query_params
[
self
.
page_size_query_param
],
strict
=
True
,
cutoff
=
self
.
max_page_size
)
except
(
KeyError
,
ValueError
):
pass
return
self
.
page_size
class
PageNumberPagination
(
BasePageSizePagination
):
"""
"""
A simple page number based style that supports page numbers as
A simple page number based style that supports page numbers as
query parameters. For example:
query parameters. For example:
...
@@ -236,10 +209,21 @@ class PageNumberPagination(BasePageSizePagination):
...
@@ -236,10 +209,21 @@ class PageNumberPagination(BasePageSizePagination):
http://api.example.org/accounts/?page=4
http://api.example.org/accounts/?page=4
http://api.example.org/accounts/?page=4&page_size=100
http://api.example.org/accounts/?page=4&page_size=100
"""
"""
# The default page size.
# Defaults to `None`, meaning pagination is disabled.
page_size
=
api_settings
.
PAGE_SIZE
# Client can control the page using this query parameter.
# Client can control the page using this query parameter.
page_query_param
=
'page'
page_query_param
=
'page'
# Client can control the page size using this query parameter.
# Default is 'None'. Set to eg 'page_size' to enable usage.
page_size_query_param
=
None
# Set to an integer to limit the maximum page size the client may request.
# Only relevant if 'page_size_query_param' has also been set.
max_page_size
=
None
last_page_strings
=
(
'last'
,)
last_page_strings
=
(
'last'
,)
template
=
'rest_framework/pagination/numbers.html'
template
=
'rest_framework/pagination/numbers.html'
...
@@ -334,6 +318,19 @@ class PageNumberPagination(BasePageSizePagination):
...
@@ -334,6 +318,19 @@ class PageNumberPagination(BasePageSizePagination):
(
'results'
,
data
)
(
'results'
,
data
)
]))
]))
def
get_page_size
(
self
,
request
):
if
self
.
page_size_query_param
:
try
:
return
_positive_int
(
request
.
query_params
[
self
.
page_size_query_param
],
strict
=
True
,
cutoff
=
self
.
max_page_size
)
except
(
KeyError
,
ValueError
):
pass
return
self
.
page_size
def
get_next_link
(
self
):
def
get_next_link
(
self
):
if
not
self
.
page
.
has_next
():
if
not
self
.
page
.
has_next
():
return
None
return
None
...
@@ -487,20 +484,20 @@ class LimitOffsetPagination(BasePagination):
...
@@ -487,20 +484,20 @@ class LimitOffsetPagination(BasePagination):
return
template
.
render
(
context
)
return
template
.
render
(
context
)
class
CursorPagination
(
BasePag
eSizePag
ination
):
class
CursorPagination
(
BasePagination
):
"""
"""
The cursor pagination implementation is neccessarily complex.
The cursor pagination implementation is neccessarily complex.
For an overview of the position/offset style we use, see this post:
For an overview of the position/offset style we use, see this post:
http://cramer.io/2011/03/08/building-cursors-for-the-disqus-api/
http://cramer.io/2011/03/08/building-cursors-for-the-disqus-api/
"""
"""
cursor_query_param
=
'cursor'
cursor_query_param
=
'cursor'
page_size
=
api_settings
.
PAGE_SIZE
invalid_cursor_message
=
_
(
'Invalid cursor'
)
invalid_cursor_message
=
_
(
'Invalid cursor'
)
ordering
=
'-created'
ordering
=
'-created'
template
=
'rest_framework/pagination/previous_and_next.html'
template
=
'rest_framework/pagination/previous_and_next.html'
def
paginate_queryset
(
self
,
queryset
,
request
,
view
=
None
):
def
paginate_queryset
(
self
,
queryset
,
request
,
view
=
None
):
self
.
page_size
=
self
.
get_page_size
(
request
)
if
self
.
page_size
is
None
:
if
not
self
.
page_size
:
return
None
return
None
self
.
base_url
=
request
.
build_absolute_uri
()
self
.
base_url
=
request
.
build_absolute_uri
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment