diff --git a/apps/smart/api/serializers.py b/apps/smart/api/serializers.py index ac5700f..5091f31 100644 --- a/apps/smart/api/serializers.py +++ b/apps/smart/api/serializers.py @@ -8,7 +8,6 @@ class SmartListSerializer(serializers.ModelSerializer): model = SmartModule fields = [ 'name', - 'desc' 'device_id', 'chip_id' ] diff --git a/apps/smart/api/urls.py b/apps/smart/api/urls.py new file mode 100644 index 0000000..5eced2c --- /dev/null +++ b/apps/smart/api/urls.py @@ -0,0 +1,8 @@ +from django.urls import path +from .views import SmartListAPIView + + +app_name = 'smart-api' +urlpatterns = [ + path('', SmartListAPIView.as_view(), name='list') +] \ No newline at end of file diff --git a/apps/smart/api/views.py b/apps/smart/api/views.py new file mode 100644 index 0000000..a188d95 --- /dev/null +++ b/apps/smart/api/views.py @@ -0,0 +1,29 @@ +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 .serializers import SmartListSerializer +from ..models import SmartModule + + +class SmartListAPIView(ListAPIView): + serializer_class = SmartListSerializer + filter_backends = [SearchFilter, OrderingFilter] + search_fields = ['name', 'device_id', 'chip_id', 'region'] + + def get_queryset(self, *args, **kwargs): + queryset_list = SmartModule.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(chip_id__contains=query) | + Q(region__icontains=query) + ).distinct() + return queryset_list diff --git a/apps/smart/models.py b/apps/smart/models.py index c44ee17..cb4ed91 100644 --- a/apps/smart/models.py +++ b/apps/smart/models.py @@ -1,6 +1,5 @@ from django.db import models from django.contrib.contenttypes.fields import GenericForeignKey -from django.contrib.contenttypes.fields import GenericRelation from django.contrib.contenttypes.models import ContentType diff --git a/mosqkiller/urls.py b/mosqkiller/urls.py index 244cd7b..23157fe 100644 --- a/mosqkiller/urls.py +++ b/mosqkiller/urls.py @@ -19,4 +19,5 @@ from django.urls import path, include urlpatterns = [ path('mosq_admin/', admin.site.urls), path('api/mosq/', include('mosquito.api.urls')), + path('api/smart/', include('smart.api.urls')), ]