# finish smart / mosq api
This commit is contained in:
parent
5ab7c8faa1
commit
3e2ffed09c
|
@ -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',
|
||||
]
|
||||
|
||||
|
|
|
@ -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'),
|
||||
]
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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')
|
||||
]
|
|
@ -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
|
||||
|
|
|
@ -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')),
|
||||
]
|
Loading…
Reference in New Issue