views.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. # coding=utf-8
  2. from django.db import transaction
  3. from rest_framework import generics
  4. from rest_framework.decorators import action
  5. from utils import response_ok, response_error
  6. from utils.custom_modelviewset import CustomModelViewSet
  7. from utils.exceptions import CustomError
  8. from utils.permission import IsTenantUser, isLogin
  9. from apps.tenant.inspection_order.models import InspectionOrder
  10. from apps.tenant.inspection_order.filters import InspectionOrderFilter
  11. from apps.upload.models import Upload
  12. from .serializers import InspectionOrderSerializer, InspectionOrderListSerializer,InspectionOrderDetailSerializer
  13. from apps.log.models import BizLog
  14. from apps.tenant import tenant_log
  15. class InspectionOrderDetailView(generics.RetrieveAPIView):
  16. # 检修工单详情,已不用。
  17. permission_classes = [isLogin, ]
  18. queryset = InspectionOrder.objects.filter()
  19. serializer_class = InspectionOrderDetailSerializer
  20. def retrieve(self, request, *args, **kwargs):
  21. instance = self.get_object()
  22. serializer = self.get_serializer(instance)
  23. return response_ok(serializer.data)
  24. def filter_queryset(self, queryset):
  25. # queryset = queryset.filter(tenant=self.request.user.employee.tenant, user=self.request.user)
  26. f = InspectionOrderFilter(self.request.GET, queryset=queryset)
  27. return f.qs
  28. class InspectionOrderAllView(generics.ListAPIView):
  29. permission_classes = [isLogin, ]
  30. queryset = InspectionOrder.objects.filter()
  31. serializer_class = InspectionOrderListSerializer
  32. def filter_queryset(self, queryset):
  33. queryset = queryset.filter(tenant=self.request.user.employee.tenant)
  34. f = InspectionOrderFilter(self.request.GET, queryset=queryset)
  35. return f.qs
  36. class InspectionOrderViewSet(CustomModelViewSet):
  37. permission_classes = [isLogin, ]
  38. queryset = InspectionOrder.objects.filter()
  39. serializer_class = InspectionOrderSerializer
  40. def filter_queryset(self, queryset):
  41. queryset = queryset.filter(tenant=self.request.user.employee.tenant, user=self.request.user)
  42. f = InspectionOrderFilter(self.request.GET, queryset=queryset)
  43. return f.qs
  44. def retrieve(self, request, *args, **kwargs):
  45. # 巡检工单详情
  46. instance = self.get_object()
  47. serializer = InspectionOrderDetailSerializer(instance)
  48. return response_ok(serializer.data)
  49. def perform_create(self, serializer):
  50. super(InspectionOrderViewSet, self).perform_create(serializer)
  51. instance = serializer.instance
  52. validated_data = serializer.validated_data
  53. tenant_log(self.request.user.employee, BizLog.INSERT, u'添加巡检[%s],id=%d' % (instance.no, instance.id),
  54. validated_data)
  55. @action(methods=['get'], detail=True)
  56. def turn_repair(self, request, pk):
  57. # 转报修
  58. try:
  59. if not self.request.user.is_employee():
  60. raise CustomError(u"权限不足,禁止操作!")
  61. with transaction.atomic():
  62. user = self.request.user
  63. instance = InspectionOrder.get_instance_by_id(pk, user.employee.tenant)
  64. instance.turn_repair(user)
  65. except CustomError as e:
  66. return response_error(e.get_error_msg())
  67. except Exception as e:
  68. return response_error(str(e))
  69. return response_ok('转报修完成!')
  70. @action(methods=['post'], detail=False)
  71. def upload_image(self, request):
  72. file = self.request.FILES.get('file')
  73. user = self.request.user
  74. upload = Upload.objects._addnew(user.employee.tenant, user, Upload.INSPECTION_IMAGE, file)
  75. if upload:
  76. return response_ok(upload.id)
  77. return response_error('上传失败,请重新上传!')