feat: mobile device detail api

This commit is contained in:
xianfx 2024-03-03 22:53:45 +08:00
parent d629f02ac1
commit 90f526fb52
2 changed files with 21 additions and 5 deletions

View File

@ -1,10 +1,11 @@
from django.urls import path from django.urls import path
from .views import ( from .views import (
DeviceInfoMobileListAPIView DeviceInfoMobileViewSet
) )
app_name = 'counter-mobile-api' app_name = 'counter-mobile-api'
urlpatterns = [ urlpatterns = [
path('device/', DeviceInfoMobileListAPIView.as_view(), name='logs'), path('device/', DeviceInfoMobileViewSet.as_view({'get': 'list'}), name='device-mobile-list'),
path('device/<device_id>/', DeviceInfoMobileViewSet.as_view({'get': 'retrieve'}), name='device-mobile-detail'),
] ]

View File

@ -3,7 +3,8 @@ from rest_framework.filters import (
SearchFilter, SearchFilter,
OrderingFilter OrderingFilter
) )
from rest_framework.generics import ListAPIView from rest_framework.generics import mixins
from rest_framework.viewsets import GenericViewSet
from rest_framework.permissions import IsAuthenticated from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response from rest_framework.response import Response
@ -13,7 +14,10 @@ from utils.pagination import DeviceInfoMobilePagination
from ...mixins.role import RoleMixin from ...mixins.role import RoleMixin
class DeviceInfoMobileListAPIView(ListAPIView, RoleMixin): class DeviceInfoMobileViewSet(mixins.ListModelMixin,
mixins.RetrieveModelMixin,
RoleMixin,
GenericViewSet):
serializer_class = DeviceInfoMobileSerializer serializer_class = DeviceInfoMobileSerializer
permission_classes = [IsAuthenticated] permission_classes = [IsAuthenticated]
filter_backends = [SearchFilter, OrderingFilter] filter_backends = [SearchFilter, OrderingFilter]
@ -33,6 +37,11 @@ class DeviceInfoMobileListAPIView(ListAPIView, RoleMixin):
} }
return Response(response_data, status=status.HTTP_200_OK) return Response(response_data, status=status.HTTP_200_OK)
def retrieve(self, request, *args, **kwargs):
instance = self.get_object()
serializer = self.get_serializer(instance)
return Response({"code": 0, "data": serializer.data, "message": "获取成功"})
def get_queryset(self, *args, **kwargs): def get_queryset(self, *args, **kwargs):
user_roles = self.get_role() user_roles = self.get_role()
queryset = DeviceInfo.objects.get_queryset().order_by('-last_offline_time') queryset = DeviceInfo.objects.get_queryset().order_by('-last_offline_time')
@ -52,3 +61,9 @@ class DeviceInfoMobileListAPIView(ListAPIView, RoleMixin):
queryset = queryset.filter(online=int(device_status)) queryset = queryset.filter(online=int(device_status))
return queryset return queryset
def get_object(self):
queryset = self.get_queryset()
filter_kwargs = {'device_id': self.kwargs['device_id']}
obj = queryset.filter(**filter_kwargs).first()
self.check_object_permissions(self.request, obj)
return obj