# finish smart / mosq api

This commit is contained in:
xianfuxing 2018-07-14 16:14:34 +08:00
parent 5ab7c8faa1
commit 3e2ffed09c
7 changed files with 56 additions and 10 deletions

View File

@ -1,6 +1,6 @@
from rest_framework import serializers
from mosquito.models import Mosquito, MosqPost
from smart.api.serializers import SmartListSerializer
from smart.api.serializers import SmartPushListSerializer
class MosqListSerializer(serializers.ModelSerializer):
@ -15,15 +15,18 @@ class MosqListSerializer(serializers.ModelSerializer):
class MosqPostListSerializer(serializers.ModelSerializer):
smart_push = SmartPushListSerializer(read_only=True)
region = serializers.SerializerMethodField()
class Meta:
model = MosqPost
fields = [
'id',
'mosq',
'led',
'energy',
'region',
'smart_push',
'time',
]

View File

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

View File

@ -7,8 +7,8 @@ from rest_framework.generics import (
from rest_framework.permissions import IsAuthenticated
from rest_framework.filters import SearchFilter, OrderingFilter
from django.db.models import Q
from ..models import Mosquito
from .serializers import MosqListSerializer
from ..models import Mosquito, MosqPost
from .serializers import MosqListSerializer, MosqPostListSerializer
class MosquitoListAPIView(ListAPIView):
@ -26,3 +26,19 @@ class MosquitoListAPIView(ListAPIView):
Q(region__icontains=query)
).distinct()
return queryset_list
class MosquitoPostListAPIView(ListAPIView):
serializer_class = MosqPostListSerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ['mosq__name', 'mosq__region']
def get_queryset(self, *args, **kwargs):
queryset_list = MosqPost.objects.all()
query = self.request.GET.get('q')
if query:
queryset_list = queryset_list.filter(
Q(mosq__name__contains=query) |
Q(mosq__region=query)
).distinct()
return queryset_list

View File

@ -14,6 +14,7 @@ class SmartListSerializer(serializers.ModelSerializer):
class SmartPushListSerializer(serializers.ModelSerializer):
smart = serializers.SerializerMethodField()
class Meta:
model = SmartPush
@ -22,4 +23,7 @@ class SmartPushListSerializer(serializers.ModelSerializer):
'signal',
'coordinate',
'time',
]
]
def get_smart(self, obj):
return obj.smart.name

View File

@ -1,8 +1,9 @@
from django.urls import path
from .views import SmartListAPIView
from .views import SmartListAPIView, SmartPushListAPIView
app_name = 'smart-api'
urlpatterns = [
path('', SmartListAPIView.as_view(), name='list')
path('', SmartListAPIView.as_view(), name='list'),
path('push/', SmartPushListAPIView.as_view(), name='push')
]

View File

@ -7,8 +7,8 @@ from rest_framework.generics import (
from rest_framework.permissions import IsAuthenticated
from rest_framework.filters import SearchFilter, OrderingFilter
from django.db.models import Q
from .serializers import SmartListSerializer
from ..models import SmartModule
from .serializers import SmartListSerializer, SmartPushListSerializer
from ..models import SmartModule, SmartPush
class SmartListAPIView(ListAPIView):
@ -26,4 +26,21 @@ class SmartListAPIView(ListAPIView):
Q(chip_id__contains=query) |
Q(region__icontains=query)
).distinct()
return queryset_list
class SmartPushListAPIView(ListAPIView):
serializer_class = SmartPushListSerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ['smart__name']
def get_queryset(self, *args, **kwargs):
queryset_list = SmartPush.objects.all()
query = self.request.GET.get('q')
if query:
queryset_list = queryset_list.filter(
Q(smart__name__icontains=query)
).distinct()
return queryset_list

View File

@ -21,3 +21,7 @@ urlpatterns = [
path('api/mosq/', include('mosquito.api.urls')),
path('api/smart/', include('smart.api.urls')),
]
urlpatterns += [
path('api-auth/', include('rest_framework.urls')),
]