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.
This commit is contained in:
Andrew Melton 2013-08-01 11:33:44 -04:00
parent 691c2833cc
commit 0d3a8be1de
2 changed files with 8 additions and 4 deletions

View File

@ -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:

View File

@ -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({})