Skip to content

Commit 9d7e879

Browse files
committed
Fix query parameter definitions, exception handling
1 parent 34f42d9 commit 9d7e879

File tree

1 file changed

+8
-10
lines changed

1 file changed

+8
-10
lines changed

rest_framework_datatables/pagination.py

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -43,19 +43,16 @@ def get_count_and_total_count(self, queryset, view):
4343

4444

4545
class DatatablesPageNumberPagination(DatatablesMixin, PageNumberPagination):
46-
page_query_param = 'start'
47-
page_size_query_param = 'length'
48-
4946
def get_page_size(self, request):
5047
if self.page_size_query_param:
5148
try:
5249
size = int(get_param(request, self.page_size_query_param))
5350
if size <= 0:
5451
raise ValueError()
55-
if self.max_page_size:
52+
if self.max_page_size is not None:
5653
return min(size, self.max_page_size)
5754
return size
58-
except ValueError:
55+
except (ValueError, TypeError):
5956
pass
6057
return self.page_size
6158

@@ -66,6 +63,8 @@ def paginate_queryset(self, queryset, request, view=None):
6663
DatatablesPageNumberPagination, self
6764
).paginate_queryset(queryset, request, view)
6865

66+
self.page_query_param = 'start'
67+
self.page_size_query_param = 'length'
6968
length = get_param(request, self.page_size_query_param)
7069

7170
if length is None or length == '-1':
@@ -103,9 +102,6 @@ def count(self):
103102

104103

105104
class DatatablesLimitOffsetPagination(DatatablesMixin, LimitOffsetPagination):
106-
limit_query_param = 'length'
107-
offset_query_param = 'start'
108-
109105
def get_limit(self, request):
110106
try:
111107
limit_value = int(get_param(request, self.limit_query_param))
@@ -115,7 +111,7 @@ def get_limit(self, request):
115111
if self.max_limit is not None:
116112
return min(limit_value, self.max_limit)
117113
return limit_value
118-
except ValueError:
114+
except (ValueError, TypeError):
119115
return self.default_limit
120116

121117
def get_offset(self, request):
@@ -125,12 +121,14 @@ def get_offset(self, request):
125121
raise ValueError
126122

127123
return offset_value
128-
except ValueError:
124+
except (ValueError, TypeError):
129125
return 0
130126

131127
def paginate_queryset(self, queryset, request, view=None):
132128
if request.accepted_renderer.format == 'datatables':
133129
self.is_datatable_request = True
130+
self.limit_query_param = 'length'
131+
self.offset_query_param = 'start'
134132
if get_param(request, self.limit_query_param) is None:
135133
return None
136134
self.count, self.total_count = self.get_count_and_total_count(

0 commit comments

Comments
 (0)