# mosquito api done
This commit is contained in:
parent
f69bf49d85
commit
dd946943e4
|
@ -1,10 +1,22 @@
|
||||||
from rest_framework import serializers
|
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):
|
class MosqPostListSerializer(serializers.ModelSerializer):
|
||||||
smart_chip = serializers.SerializerMethodField()
|
|
||||||
region = serializers.SerializerMethodField()
|
region = serializers.SerializerMethodField()
|
||||||
|
smarts = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = MosqPost
|
model = MosqPost
|
||||||
|
@ -12,15 +24,15 @@ class MosqPostListSerializer(serializers.ModelSerializer):
|
||||||
'mosq',
|
'mosq',
|
||||||
'led',
|
'led',
|
||||||
'energy',
|
'energy',
|
||||||
'smart_chip'
|
'region',
|
||||||
'signal',
|
'smarts',
|
||||||
'coordinate'
|
'time',
|
||||||
'region'
|
|
||||||
'time'
|
|
||||||
]
|
]
|
||||||
|
|
||||||
def get_smart_chip(self, obj):
|
|
||||||
return obj.mosq.smart_module.device_id
|
|
||||||
|
|
||||||
def get_region(self, obj):
|
def get_region(self, obj):
|
||||||
return obj.mosq.region
|
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
|
||||||
|
|
|
@ -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')
|
||||||
|
]
|
|
@ -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
|
|
@ -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'
|
||||||
|
]
|
|
@ -39,6 +39,7 @@ INSTALLED_APPS = [
|
||||||
'django.contrib.sessions',
|
'django.contrib.sessions',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
|
'rest_framework',
|
||||||
'mosquito',
|
'mosquito',
|
||||||
'smart',
|
'smart',
|
||||||
]
|
]
|
||||||
|
|
|
@ -14,8 +14,9 @@ Including another URLconf
|
||||||
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
|
||||||
"""
|
"""
|
||||||
from django.contrib import admin
|
from django.contrib import admin
|
||||||
from django.urls import path
|
from django.urls import path, include
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('mosq_admin/', admin.site.urls),
|
path('mosq_admin/', admin.site.urls),
|
||||||
|
path('api/mosq/', include('mosquito.api.urls')),
|
||||||
]
|
]
|
||||||
|
|
Loading…
Reference in New Issue