From 8993ec8edc7c81bf6d8e7ce3b549d9c2ae064a41 Mon Sep 17 00:00:00 2001 From: xianfuxing Date: Thu, 20 Sep 2018 19:12:36 +0800 Subject: [PATCH] =?UTF-8?q?#=20=E6=B7=BB=E5=8A=A0=E8=AE=BE=E5=A4=87?= =?UTF-8?q?=E6=97=A5=E5=BF=97=E7=BB=9F=E8=AE=A1=E5=8E=86=E5=8F=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/counter/api/serializers.py | 16 +++++++++++++--- apps/counter/api/urls.py | 4 +++- apps/counter/api/views.py | 18 +++++++++++++++++- 3 files changed, 33 insertions(+), 5 deletions(-) diff --git a/apps/counter/api/serializers.py b/apps/counter/api/serializers.py index be79259..cb03cad 100644 --- a/apps/counter/api/serializers.py +++ b/apps/counter/api/serializers.py @@ -4,7 +4,7 @@ from datetime import datetime, time from django.db.models import Sum from rest_framework import serializers from counter.models import DeviceCount, DeviceInfo -from mosquito.models import MosqPostStatistic +from mosquito.models import MosqPostStatistic, DevicePostStatistic class DeviceCountSerializer(serializers.ModelSerializer): @@ -93,7 +93,6 @@ class DeviceInfoSerializer(serializers.ModelSerializer): return [q.longitude, q.latitude] return None - def get_time(self, obj): if self.latest: return self.latest.data_time.strftime('%Y-%m-%d %H:%M:%S') @@ -108,4 +107,15 @@ class LogHistorySerializer(serializers.ModelSerializer): 'date', 'total', 'increment', - ] \ No newline at end of file + ] + + +class DeviceLogHistorySerializer(serializers.ModelSerializer): + + class Meta: + model = DevicePostStatistic + fields = [ + 'device_id', + 'total', + 'date' + ] diff --git a/apps/counter/api/urls.py b/apps/counter/api/urls.py index 6b178ff..ca18bec 100644 --- a/apps/counter/api/urls.py +++ b/apps/counter/api/urls.py @@ -4,7 +4,8 @@ from .views import ( DeviceInfoListAPIView, DeviceLogStatisticAPIView, DeviceInfoStatisticAPIView, - LogHistoryListAPIView + LogHistoryListAPIView, + DeviceLogHistoryListAPIView ) @@ -14,5 +15,6 @@ urlpatterns = [ path('device/', DeviceInfoListAPIView.as_view(), name='device'), path('logs/statistic/', DeviceLogStatisticAPIView.as_view(), name='logs-statistic'), path('logs/statistic/history/', LogHistoryListAPIView.as_view(), name='logs-statistic-history'), + path('device/logs/history/', DeviceLogHistoryListAPIView.as_view(), name='device-logs-history'), path('device/statistic/', DeviceInfoStatisticAPIView.as_view(), name='device-statistic'), ] \ No newline at end of file diff --git a/apps/counter/api/views.py b/apps/counter/api/views.py index cac6f31..5d4a893 100644 --- a/apps/counter/api/views.py +++ b/apps/counter/api/views.py @@ -17,9 +17,10 @@ from .serializers import ( DeviceCountSerializer, DeviceInfoSerializer, LogHistorySerializer, + DeviceLogHistorySerializer, ) from ..models import DeviceCount, DeviceInfo -from mosquito.models import MosqPostStatistic +from mosquito.models import MosqPostStatistic, DevicePostStatistic class DeviceLogListAPIView(ListAPIView): @@ -107,3 +108,18 @@ class LogHistoryListAPIView(ListAPIView): pagination_class = PostLimitOffsetPagination search_fields = ['date'] queryset = MosqPostStatistic.objects.all().order_by('-date') + + +class DeviceLogHistoryListAPIView(ListAPIView): + serializer_class = DeviceLogHistorySerializer + permission_classes = [IsAuthenticated] + filter_backends = [SearchFilter, OrderingFilter] + pagination_class = PostLimitOffsetPagination + search_fields = ['device_id', 'date'] + + def get_queryset(self, *args, **kwargs): + queryset_list = DevicePostStatistic.objects.get_queryset().order_by('-date') + device_id = self.request.GET.get('device_id') + if device_id: + queryset_list = queryset_list.filter(device_id__icontains=device_id) + return queryset_list