views.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. # coding:utf-8
  2. import datetime
  3. from rest_framework.response import Response
  4. from rest_framework.views import APIView
  5. from drf_spectacular.utils import extend_schema, OpenApiResponse, OpenApiParameter, OpenApiExample, OpenApiTypes
  6. from rest_framework.generics import GenericAPIView
  7. from ..models import PhotoForbiddenInfo
  8. from monitor.pagination import CustomPagination
  9. from monitor.permissions import LoginPermission
  10. from .serializers import PhotoMonitorListSerializer, PhotoMonitorPostSerializer
  11. class PhotoMonitorView(GenericAPIView):
  12. # queryset = PhotoForbiddenInfo.objects.using('siqing').filter(is_allowrd=1).order_by('-id')
  13. queryset = PhotoForbiddenInfo.objects.using('siqing').exclude(is_allowrd=1).order_by('-id')
  14. serializer_class = PhotoMonitorListSerializer
  15. pagination_class = CustomPagination
  16. permission_classes = [LoginPermission]
  17. def get_serializer_class(self):
  18. if self.request.method == 'POST':
  19. return PhotoMonitorPostSerializer
  20. return self.serializer_class
  21. @extend_schema(
  22. parameters=[
  23. OpenApiParameter(
  24. name='page',
  25. type=OpenApiTypes.STR,
  26. location=OpenApiParameter.QUERY,
  27. description='页码,第几页',
  28. ),
  29. OpenApiParameter(
  30. name='size',
  31. type=OpenApiTypes.STR,
  32. location=OpenApiParameter.QUERY,
  33. description='每页条目数',
  34. ),
  35. OpenApiParameter(
  36. name='device_id',
  37. type=OpenApiTypes.STR,
  38. location=OpenApiParameter.QUERY,
  39. description='设备编号',
  40. ),
  41. ],
  42. description="获取待解封列表接口",
  43. request=None,
  44. responses=PhotoMonitorListSerializer
  45. )
  46. def get(self, request):
  47. '''获取待解封列表接口'''
  48. device_id = request.query_params.get('device_id', '').strip()
  49. queryset = self.get_queryset()
  50. if device_id:
  51. queryset = queryset.filter(device_id__contains=device_id)
  52. page_data = self.paginate_queryset(queryset)
  53. ser_obj = self.get_serializer(page_data, many=True)
  54. data = self.get_paginated_response(ser_obj.data)
  55. return data
  56. @extend_schema(
  57. description="解封封禁接口",
  58. request=PhotoMonitorPostSerializer,
  59. responses=None
  60. )
  61. def post(self, request):
  62. '''解封封禁'''
  63. ser_obj = self.get_serializer(data=request.data)
  64. ser_obj.is_valid(raise_exception=True)
  65. device_id = request.data['device_id']
  66. queryset = self.get_queryset()
  67. queryset = queryset.filter(device_id=device_id)
  68. if queryset:
  69. queryset.update(is_allowrd=2, operate_time=datetime.datetime.now())
  70. return Response(status=200)