views.py 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from django.db import transaction
  2. from rest_framework.decorators import action
  3. from utils import response_error, response_ok
  4. from utils.custom_modelviewset import CustomModelViewSet
  5. from utils.exceptions import CustomError
  6. from utils.permission import IsTenantUser
  7. from .models import InspectionOrder
  8. from .filters import InspectionOrderFilter
  9. from .serializers import InspectionOrderSerializer
  10. class InspectionOrderViewSet(CustomModelViewSet):
  11. permission_classes = [IsTenantUser, ]
  12. queryset = InspectionOrder.objects.filter()
  13. serializer_class = InspectionOrderSerializer
  14. def filter_queryset(self, queryset):
  15. queryset = queryset.filter(tenant=self.request.user.employee.tenant)
  16. f = InspectionOrderFilter(self.request.GET, queryset=queryset)
  17. return f.qs
  18. @action(methods=['post'], detail=True)
  19. def turn_repair(self, request, pk):
  20. # 转报修
  21. try:
  22. if not self.request.user.has_perm('inspection_order.dturn_repair_inspection_order'):
  23. raise CustomError(u"您没有[报修工单-转报修]权限,无法执行该操作,请联系管理员分配权限!")
  24. with transaction.atomic():
  25. user = self.request.user
  26. instance = InspectionOrder.get_instance_by_id(pk, user.employee.tenant)
  27. instance.turn_repair(user)
  28. except CustomError as e:
  29. return response_error(e.get_error_msg())
  30. except Exception as e:
  31. return response_error(str(e))
  32. return response_ok('转报修完成!')