Mosqkiller-API/apps/mosquito/api/views.py

45 lines
1.4 KiB
Python

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, MosqPost
from .serializers import MosqListSerializer, MosqPostListSerializer
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
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