From 0d3a8be1dec4de942c358b930a15cbd338d57278 Mon Sep 17 00:00:00 2001 From: Andrew Melton Date: Thu, 1 Aug 2013 11:33:44 -0400 Subject: [PATCH] Casting dbapi limit query_param to int Since query params are provided by django as a String, all limits were failing the comparison against the HARD_LIMIT and thus a limit of 1 was getting turned into the HARD_LIMIT. --- stacktach/dbapi.py | 4 ++++ tests/unit/test_dbapi.py | 8 ++++---- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/stacktach/dbapi.py b/stacktach/dbapi.py index b613525..dfd99b2 100644 --- a/stacktach/dbapi.py +++ b/stacktach/dbapi.py @@ -290,6 +290,10 @@ def get_db_objects(klass, request, default_order_by, direction='desc', offset = request.GET.get('offset') limit = request.GET.get('limit', DEFAULT_LIMIT) + + if limit: + limit = int(limit) + if limit > HARD_LIMIT: limit = HARD_LIMIT if offset: diff --git a/tests/unit/test_dbapi.py b/tests/unit/test_dbapi.py index fdc9c44..9cc83d5 100644 --- a/tests/unit/test_dbapi.py +++ b/tests/unit/test_dbapi.py @@ -195,7 +195,7 @@ class DBAPITestCase(unittest.TestCase): def test_get_db_objects_limit(self): fake_model = self.make_fake_model() fake_request = self.mox.CreateMockAnything() - fake_request.GET = {'limit': 1} + fake_request.GET = {'limit': '1'} self.mox.StubOutWithMock(dbapi, '_get_filter_args') dbapi._get_filter_args(fake_model, fake_request, custom_filters=None).AndReturn({}) @@ -215,7 +215,7 @@ class DBAPITestCase(unittest.TestCase): def test_get_db_objects_hard_limit(self): fake_model = self.make_fake_model() fake_request = self.mox.CreateMockAnything() - fake_request.GET = {'limit': dbapi.HARD_LIMIT + 1} + fake_request.GET = {'limit': str(dbapi.HARD_LIMIT + 1)} self.mox.StubOutWithMock(dbapi, '_get_filter_args') dbapi._get_filter_args(fake_model, fake_request, custom_filters=None).AndReturn({}) @@ -236,7 +236,7 @@ class DBAPITestCase(unittest.TestCase): def test_get_db_objects_offset(self): fake_model = self.make_fake_model() fake_request = self.mox.CreateMockAnything() - fake_request.GET = {'offset': 1} + fake_request.GET = {'offset': '1'} self.mox.StubOutWithMock(dbapi, '_get_filter_args') dbapi._get_filter_args(fake_model, fake_request, custom_filters=None).AndReturn({}) @@ -256,7 +256,7 @@ class DBAPITestCase(unittest.TestCase): def test_get_db_objects_offset_and_limit(self): fake_model = self.make_fake_model() fake_request = self.mox.CreateMockAnything() - fake_request.GET = {'offset': 2, 'limit': 2} + fake_request.GET = {'offset': '2', 'limit': '2'} self.mox.StubOutWithMock(dbapi, '_get_filter_args') dbapi._get_filter_args(fake_model, fake_request, custom_filters=None).AndReturn({})