diff options
| author | Tom Christie | 2013-08-21 21:18:46 +0100 |
|---|---|---|
| committer | Tom Christie | 2013-08-21 21:18:46 +0100 |
| commit | 815ef50735f50c7aff5255e60f1b484e75178e87 (patch) | |
| tree | d393de8eacdc3a2a6ae08306a9f4ecd59812b8f0 /rest_framework | |
| parent | db25aaff3a05b5a2d7022fb925362a1bbfb19113 (diff) | |
| download | django-rest-framework-815ef50735f50c7aff5255e60f1b484e75178e87.tar.bz2 | |
If page size query param <= 0, just use default page size.
Closes #1028
Diffstat (limited to 'rest_framework')
| -rw-r--r-- | rest_framework/generics.py | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/rest_framework/generics.py b/rest_framework/generics.py index 874a142c..bcd62bf9 100644 --- a/rest_framework/generics.py +++ b/rest_framework/generics.py @@ -14,6 +14,15 @@ from rest_framework.settings import api_settings import warnings +def strict_positive_int(integer_string): + """ + Cast a string to a strictly positive integer. + """ + ret = int(integer_string) + if ret <= 0: + raise ValueError() + return ret + def get_object_or_404(queryset, **filter_kwargs): """ Same as Django's standard shortcut, but make sure to raise 404 @@ -198,7 +207,7 @@ class GenericAPIView(views.APIView): if self.paginate_by_param: query_params = self.request.QUERY_PARAMS try: - return int(query_params[self.paginate_by_param]) + return strict_positive_int(query_params[self.paginate_by_param]) except (KeyError, ValueError): pass |
