feat: mobile device detail api
This commit is contained in:
parent
d629f02ac1
commit
90f526fb52
|
@ -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'),
|
||||||
|
]
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue