views.py 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738
  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, permission_required
  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. @permission_required('inspection_order.browse_inspection_order')
  15. def filter_queryset(self, queryset):
  16. queryset = queryset.filter(tenant=self.request.user.employee.tenant)
  17. f = InspectionOrderFilter(self.request.GET, queryset=queryset)
  18. return f.qs
  19. @action(methods=['post'], detail=True)
  20. def turn_repair(self, request, pk):
  21. # 转报修
  22. try:
  23. if not self.request.user.has_perm('inspection_order.dturn_repair_inspection_order'):
  24. raise CustomError(u"您没有[报修工单-转报修]权限,无法执行该操作,请联系管理员分配权限!")
  25. with transaction.atomic():
  26. user = self.request.user
  27. instance = InspectionOrder.get_instance_by_id(pk, user.employee.tenant)
  28. instance.turn_repair(user)
  29. except CustomError as e:
  30. return response_error(e.get_error_msg())
  31. except Exception as e:
  32. return response_error(str(e))
  33. return response_ok('转报修完成!')