feat: mobile device detail api
This commit is contained in:
parent
d629f02ac1
commit
90f526fb52
|
@ -1,10 +1,11 @@
|
|||
from django.urls import path
|
||||
from .views import (
|
||||
DeviceInfoMobileListAPIView
|
||||
DeviceInfoMobileViewSet
|
||||
)
|
||||
|
||||
|
||||
app_name = 'counter-mobile-api'
|
||||
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,
|
||||
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.response import Response
|
||||
|
||||
|
@ -13,7 +14,10 @@ from utils.pagination import DeviceInfoMobilePagination
|
|||
from ...mixins.role import RoleMixin
|
||||
|
||||
|
||||
class DeviceInfoMobileListAPIView(ListAPIView, RoleMixin):
|
||||
class DeviceInfoMobileViewSet(mixins.ListModelMixin,
|
||||
mixins.RetrieveModelMixin,
|
||||
RoleMixin,
|
||||
GenericViewSet):
|
||||
serializer_class = DeviceInfoMobileSerializer
|
||||
permission_classes = [IsAuthenticated]
|
||||
filter_backends = [SearchFilter, OrderingFilter]
|
||||
|
@ -33,6 +37,11 @@ class DeviceInfoMobileListAPIView(ListAPIView, RoleMixin):
|
|||
}
|
||||
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):
|
||||
user_roles = self.get_role()
|
||||
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))
|
||||
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