From 2f741d20a05d946023d2ba3c873b606211ca08eb Mon Sep 17 00:00:00 2001 From: xianfuxing Date: Mon, 30 Jul 2018 21:02:50 +0800 Subject: [PATCH] # add counter api --- apps/counter/api/serializers.py | 47 ++++++++++++++++++++++++++++++++- apps/counter/api/urls.py | 9 +++++++ apps/counter/api/views.py | 29 ++++++++++++++++++++ mosqkiller/urls.py | 1 + 4 files changed, 85 insertions(+), 1 deletion(-) create mode 100644 apps/counter/api/urls.py diff --git a/apps/counter/api/serializers.py b/apps/counter/api/serializers.py index cd2e382..b807f23 100644 --- a/apps/counter/api/serializers.py +++ b/apps/counter/api/serializers.py @@ -1,4 +1,49 @@ from rest_framework import serializers +from counter.models import DeviceCount, DeviceInfo -class \ No newline at end of file +class DeviceCountSerializer(serializers.ModelSerializer): + mosq_count = serializers.SerializerMethodField() + signal = serializers.SerializerMethodField() + energy = serializers.SerializerMethodField() + calc_time = serializers.SerializerMethodField() + + class Meta: + model = DeviceCount + fields = [ + 'device_id', + 'signal', + 'mosq_count', + 'energy', + 'calc_time', + 'longitude', + 'latitude' + ] + + def get_mosq_count(self, obj): + return obj.count + + def get_signal(self, obj): + return obj.csq + + def get_energy(self, obj): + return obj.vol + + def get_calc_time(self, obj): + return obj.data_time + + +class DeviceInfoSerializer(serializers.ModelSerializer): + + class Meta: + model = DeviceInfo + fields = [ + 'device_id', + 'device_name', + 'chip_type', + 'chip_id', + 'compile_time', + 'online', + 'last_connect', + 'last_offline_time' + ] \ No newline at end of file diff --git a/apps/counter/api/urls.py b/apps/counter/api/urls.py new file mode 100644 index 0000000..ed5183c --- /dev/null +++ b/apps/counter/api/urls.py @@ -0,0 +1,9 @@ +from django.urls import path +from .views import DeviceCountListAPIView, DeviceInfoListAPIView + + +app_name = 'counter-api' +urlpatterns = [ + path('count/', DeviceCountListAPIView.as_view(), name='count'), + path('device/', DeviceInfoListAPIView.as_view(), name='device'), +] \ No newline at end of file diff --git a/apps/counter/api/views.py b/apps/counter/api/views.py index e69de29..156408b 100644 --- a/apps/counter/api/views.py +++ b/apps/counter/api/views.py @@ -0,0 +1,29 @@ +from rest_framework.generics import ( + ListAPIView, + RetrieveAPIView, + CreateAPIView +) + +from rest_framework.permissions import IsAuthenticated +from rest_framework.filters import SearchFilter, OrderingFilter +from mosquito.api.pagination import PostLimitOffsetPagination, PostPageNumberPagination +from .serializers import DeviceCountSerializer, DeviceInfoSerializer +from ..models import DeviceCount, DeviceInfo + + +class DeviceCountListAPIView(ListAPIView): + serializer_class = DeviceCountSerializer + permission_classes = [IsAuthenticated] + filter_backends = [SearchFilter, OrderingFilter] + pagination_class = PostLimitOffsetPagination + search_fields = ['device_id'] + queryset = DeviceCount.objects.all() + + +class DeviceInfoListAPIView(ListAPIView): + serializer_class = DeviceInfoSerializer + permission_classes = [IsAuthenticated] + filter_backends = [SearchFilter, OrderingFilter] + pagination_class = PostLimitOffsetPagination + search_fields = ['device_id', 'device_name', 'chip_type', 'chip_id'] + queryset = DeviceInfo.objects.all() \ No newline at end of file diff --git a/mosqkiller/urls.py b/mosqkiller/urls.py index b1a28c0..1037cba 100644 --- a/mosqkiller/urls.py +++ b/mosqkiller/urls.py @@ -24,6 +24,7 @@ urlpatterns = [ path('mosq_admin/', admin.site.urls), path('api/mosq/', include('mosquito.api.urls')), path('api/smart/', include('smart.api.urls')), + path('api/counter/', include('counter.api.urls')), path('api/users/', include("accounts.api.urls")), path('api/login/', obtain_jwt_token), ]