harvest-dev team mailing list archive
-
harvest-dev team
-
Mailing list archive
-
Message #00707
[Merge] lp:~dholbach/harvest/974431 into lp:harvest
Daniel Holbach has proposed merging lp:~dholbach/harvest/974431 into lp:harvest.
Requested reviews:
harvest-dev (harvest-dev)
Related bugs:
Bug #974431 in harvest: "/services/ API does offset/length calculation wrong"
https://bugs.launchpad.net/harvest/+bug/974431
For more details, see:
https://code.launchpad.net/~dholbach/harvest/974431/+merge/101543
The API now does slicing and sorting now properly.
Test-case:
wget -O - "http://127.0.0.1:8000/services/sourcepackages/?_sortby=id"
wget -O - "http://127.0.0.1:8000/services/sourcepackages/?_offset=500&_sortby=id"
--
https://code.launchpad.net/~dholbach/harvest/974431/+merge/101543
Your team harvest-dev is requested to review the proposed merge of lp:~dholbach/harvest/974431 into lp:harvest.
=== modified file 'harvest/services/__init__.py'
--- harvest/services/__init__.py 2010-12-08 08:15:50 +0000
+++ harvest/services/__init__.py 2012-04-11 12:36:17 +0000
@@ -80,14 +80,16 @@
for key in search_values.keys():
if key.startswith('_'):
extra_arguments[key] = search_values.pop(key)
+ if '_sortby' in request and request['_sortby'] not in EMPTY_VALUES:
+ results = model.objects.filter(**search_values).order_by(request.get('_sortby'))
+
offset = parse_number_argument(extra_arguments, '_offset')
length = parse_number_argument(extra_arguments, '_length')
+ start = offset if offset else 0
if not length or length > CHUNK_SIZE:
length = CHUNK_SIZE
- results = model.objects.filter(**search_values)[offset:length]
-
- if '_sortby' in request and request['_sortby'] not in EMPTY_VALUES:
- results = results.order_by(request.get('_sortby'))
+ end = start + length
+ results = results[start:end]
return results
def get_model_id(request, url):
Follow ups