# mosquito api done

This commit is contained in:
xianfuxing 2018-07-12 17:22:23 +08:00
parent f69bf49d85
commit dd946943e4
6 changed files with 76 additions and 12 deletions

View File

@ -1,10 +1,22 @@
from rest_framework import serializers
from mosquito.models import MosqPost
from mosquito.models import Mosquito ,MosqPost
from smart.api.serializers import SmartListSerializer
class MosqListSerializer(serializers.ModelSerializer):
class Meta:
model = Mosquito
fields = [
'name',
'device_id',
'region'
]
class MosqPostListSerializer(serializers.ModelSerializer):
smart_chip = serializers.SerializerMethodField()
region = serializers.SerializerMethodField()
smarts = serializers.SerializerMethodField()
class Meta:
model = MosqPost
@ -12,15 +24,15 @@ class MosqPostListSerializer(serializers.ModelSerializer):
'mosq',
'led',
'energy',
'smart_chip'
'signal',
'coordinate'
'region'
'time'
'region',
'smarts',
'time',
]
def get_smart_chip(self, obj):
return obj.mosq.smart_module.device_id
def get_region(self, obj):
return obj.mosq.region
def get_smarts(self, obj):
smart_queryset = obj.mosq.smart_module.all()
smarts = SmartListSerializer(smart_queryset, many=True).data
return smarts

View File

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

View File

@ -0,0 +1,28 @@
from rest_framework.generics import (
ListAPIView,
RetrieveAPIView,
CreateAPIView
)
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
class MosquitoListAPIView(ListAPIView):
serializer_class = MosqListSerializer
filter_backends = [SearchFilter, OrderingFilter]
search_fields = ['name', 'device_id', 'region']
def get_queryset(self, *args, **kwargs):
queryset_list = Mosquito.objects.all()
query = self.request.GET.get('q')
if query:
queryset_list = queryset_list.filter(
Q(name__icontains=query) |
Q(device_id__icontains=query) |
Q(region__icontains=query)
).distinct()
return queryset_list

View File

@ -0,0 +1,14 @@
from rest_framework import serializers
from smart.models import SmartModule
class SmartListSerializer(serializers.ModelSerializer):
class Meta:
model = SmartModule
fields = [
'name',
'desc'
'device_id',
'chip_id'
]

View File

@ -39,6 +39,7 @@ INSTALLED_APPS = [
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'mosquito',
'smart',
]

View File

@ -14,8 +14,9 @@ Including another URLconf
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
from django.contrib import admin
from django.urls import path
from django.urls import path, include
urlpatterns = [
path('mosq_admin/', admin.site.urls),
path('api/mosq/', include('mosquito.api.urls')),
]