# 温度、湿度api

This commit is contained in:
xianfuxing 2019-08-28 22:04:07 +08:00
parent 7210ab5e5b
commit b824f8e6c3
4 changed files with 59 additions and 5 deletions

View File

@ -1,5 +1,5 @@
from rest_framework import serializers from rest_framework import serializers
from mosquito.models import Mosquito, MosqPost from mosquito.models import Mosquito, MosqPost, DeviceTempLog
from smart.api.serializers import SmartPushListSerializer from smart.api.serializers import SmartPushListSerializer
@ -32,3 +32,10 @@ class MosqPostListSerializer(serializers.ModelSerializer):
def get_region(self, obj): def get_region(self, obj):
return obj.mosq.region return obj.mosq.region
class DeviceTempLogSerializer(serializers.ModelSerializer):
class Meta:
model = DeviceTempLog
fields = '__all__'

View File

@ -1,9 +1,14 @@
from django.urls import path, re_path from django.urls import path, re_path
from .views import MosquitoListAPIView, MosquitoPostListAPIView from .views import (
MosquitoListAPIView,
MosquitoPostListAPIView,
DeviceTempLogListAPIView,
)
app_name = 'mosq-api' app_name = 'mosq-api'
urlpatterns = [ urlpatterns = [
path('', MosquitoListAPIView.as_view(), name='list'), path('', MosquitoListAPIView.as_view(), name='list'),
path('post/', MosquitoPostListAPIView.as_view(), name='post'), path('post/', MosquitoPostListAPIView.as_view(), name='post'),
path('temp/', DeviceTempLogListAPIView.as_view(), name='temp-hum'),
] ]

View File

@ -3,13 +3,28 @@ from rest_framework.generics import (
RetrieveAPIView, RetrieveAPIView,
CreateAPIView CreateAPIView
) )
from rest_framework import filters
from rest_framework.pagination import PageNumberPagination
from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.permissions import IsAuthenticated from rest_framework.permissions import IsAuthenticated
from rest_framework.filters import SearchFilter, OrderingFilter from rest_framework.filters import SearchFilter, OrderingFilter
from django.db.models import Q from django.db.models import Q
from ..models import Mosquito, MosqPost from counter.mixins.role import RoleMixin, DeviceListMixin
from ..models import Mosquito, MosqPost, DeviceTempLog
from .pagination import PostLimitOffsetPagination, PostPageNumberPagination from .pagination import PostLimitOffsetPagination, PostPageNumberPagination
from .serializers import MosqListSerializer, MosqPostListSerializer from .serializers import (
MosqListSerializer,
MosqPostListSerializer,
DeviceTempLogSerializer,
)
class DeviceLogPagination(PageNumberPagination):
page_size = 10
page_size_query_param = 'limit'
page_query_param = 'page'
max_page_size = 1000
class MosquitoListAPIView(ListAPIView): class MosquitoListAPIView(ListAPIView):
@ -47,3 +62,29 @@ class MosquitoPostListAPIView(ListAPIView):
Q(mosq__region=query) Q(mosq__region=query)
).distinct() ).distinct()
return queryset_list return queryset_list
class DeviceTempLogListAPIView(ListAPIView, RoleMixin, DeviceListMixin):
serializer_class = DeviceTempLogSerializer
permission_classes = [IsAuthenticated]
filter_backends = (DjangoFilterBackend, filters.SearchFilter, filters.OrderingFilter)
pagination_class = DeviceLogPagination
search_fields = ['device_id']
filterset_fields = ['device_id']
ordering_fields = ['-last_time']
def get_queryset(self, *args, **kwargs):
user_roles = self.get_role()
queryset_list = DeviceTempLog.objects.get_queryset().order_by('-create_time')
if 'staff' in user_roles or 'admin' in user_roles:
device_list = self.get_device_list()
device_ids = [query.device_id for query in device_list if query.org == self.request.user.org]
queryset_list = queryset_list.filter(device_id__in=device_ids)
# device_id = self.request.GET.get('device_id')
# if device_id:
# queryset_list = queryset_list.filter(device_id__icontains=device_id)
return queryset_list

View File

@ -41,6 +41,7 @@ INSTALLED_APPS = [
'django.contrib.messages', 'django.contrib.messages',
'django.contrib.staticfiles', 'django.contrib.staticfiles',
'rest_framework', 'rest_framework',
'django_filters',
'corsheaders', 'corsheaders',
'accounts', 'accounts',
'mosquito', 'mosquito',