Skip to content

Commit 44a1079

Browse files
authored
Merge pull request #12 from pyobs/develop
v1.2.2
2 parents 2981096 + 48cd99c commit 44a1079

File tree

1 file changed

+14
-8
lines changed

1 file changed

+14
-8
lines changed

pyobs_archive/api/views.py

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import io
2+
import json
23
import os
34
import logging
45
import datetime
56
import math
7+
import time
68

79
import numpy as np
810
import zipstream
@@ -12,6 +14,7 @@
1214
from django.conf import settings
1315
from django.db.models import F
1416
from rest_framework.decorators import permission_classes, api_view
17+
from rest_framework.exceptions import ParseError
1518
from rest_framework.permissions import IsAdminUser, IsAuthenticated
1619

1720
from pyobs_archive.api.models import Frame
@@ -147,8 +150,15 @@ def filter_frames(data, request):
147150
@permission_classes([IsAuthenticated])
148151
def frames_view(request):
149152
# get offset and limit
150-
offset = request.GET.get('offset', default=None)
151-
limit = request.GET.get('limit', default=None)
153+
try:
154+
offset = int(request.GET.get('offset', default=0))
155+
limit = int(request.GET.get('limit', default=1000))
156+
except ValueError:
157+
raise ParseError('Invalid values for offset/limit.')
158+
159+
# limit to 1000
160+
limit = max(0, min(limit, 1000))
161+
offset = max(0, offset)
152162

153163
# sort
154164
sort = request.GET.get('sort', default='DATE_OBS')
@@ -162,14 +172,10 @@ def frames_view(request):
162172
data = filter_frames(data, request)
163173

164174
# get results
165-
if offset is None or limit is None:
166-
results = [frame.get_info() for frame in data]
167-
else:
168-
results = [frame.get_info() for frame in data[int(offset):int(offset) + int(limit)]]
175+
results = [frame.get_info() for frame in data[int(offset):int(offset) + int(limit)]]
169176

170177
# return them
171-
return JsonResponse({'count': len(data),
172-
'results': results})
178+
return JsonResponse({'count': len(results), 'results': results})
173179

174180

175181
@api_view(['GET'])

0 commit comments

Comments
 (0)