From 6d8dee431493b7d3af45e4c7ebb658ad2eee50fe Mon Sep 17 00:00:00 2001 From: xianfuxing Date: Tue, 23 Jun 2020 17:21:31 +0800 Subject: [PATCH] =?UTF-8?q?#=20=E6=B7=BB=E5=8A=A0=E6=97=B6=E9=97=B4?= =?UTF-8?q?=E6=9F=A5=E8=AF=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/counter/api/views.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/apps/counter/api/views.py b/apps/counter/api/views.py index a7330ce..4da39c9 100644 --- a/apps/counter/api/views.py +++ b/apps/counter/api/views.py @@ -206,6 +206,8 @@ class DeviceDailyListAPIView(ListAPIView, RoleMixin, DeviceListMixin): def get_queryset(self, *args, **kwargs): user_roles = self.get_role() device_id = self.request.GET.get('device_id') + start = self.request.GET.get('start') + end = self.request.GET.get('end') queryset = DevicePostStatistic.objects.get_queryset().order_by('-date') if 'staff' in user_roles or 'manager' in user_roles: @@ -216,4 +218,14 @@ class DeviceDailyListAPIView(ListAPIView, RoleMixin, DeviceListMixin): if device_id: queryset = queryset.filter(device_id__icontains=device_id) + if start and end: + t_pattern = re.compile(r'^2\d{3}-\d{1,2}-\d{1,2}$') + start_m = t_pattern.match(start) + end_m = t_pattern.match(end) + if not start_m or not end_m: + return Response({'detail': 'start or end must be format "yyyy-mm-dd"'}) + start = datetime.strptime(start, '%Y-%m-%d') + end = datetime.strptime(end, '%Y-%m-%d') + queryset = queryset.filter(date__gte=start, date__lt=end + timedelta(days=1)) + return queryset