views.py 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. # coding=utf-8
  2. import traceback
  3. from rest_framework.views import APIView
  4. from rest_framework.decorators import action
  5. from django.db import transaction
  6. from django.conf import settings
  7. from utils.custom_modelviewset import CustomModelViewSet
  8. from utils.exceptions import CustomError
  9. from .serializers import OrderSerializer,ProgressDetailsSerializer
  10. from .filters import OrderFilter
  11. from apps.log.models import BizLog
  12. from utils import response_ok, response_error
  13. from utils.permission import isLogin, check_permission
  14. from apps.customer.models import NewCustomer
  15. from apps.order.models import Order,ProgressDetails
  16. from apps.option.models import Option
  17. from apps.upload.models import Upload
  18. from apps.upload.serializers import UploadSerializer
  19. class GetProcessView(APIView):
  20. permission_classes = [isLogin]
  21. def get(self, request):
  22. customer_id = request.query_params.get('customer_id')
  23. dispatch = request.query_params.get('dispatch') # 分配服务人员,
  24. instance = NewCustomer.objects.filter(id=customer_id).first()
  25. if not instance:
  26. raise CustomError('当前客户信息有误,请刷新重试!')
  27. if instance.stage_progress.end_stage:
  28. raise CustomError('当前客户进度已到最后阶段,请勿重复更新!')
  29. order = Order.objects.filter(customer=instance).first()
  30. # 分配服务人员,不做重复更新判断
  31. if order and order.status == Order.WAIT_DISPATCH and not dispatch:
  32. data = {
  33. 'error': True,
  34. 'error_message': u'当前客户订单等待分配中,请勿重复更新!',
  35. }
  36. return response_ok(data)
  37. option = Option.objects.filter(type=instance.stage_progress.type, sort__gt=instance.stage_progress.sort,
  38. enable=True).order_by('sort').first()
  39. if option:
  40. data = {
  41. 'now_process_text':instance.stage_progress.name,
  42. 'next_process_text':option.name,
  43. 'next_process_id':option.id,
  44. }
  45. return response_ok(data)
  46. else:
  47. data = {
  48. 'error': True,
  49. 'error_message': u'未找到下个阶段进度,请联系管理员设置!',
  50. }
  51. return response_ok(data)
  52. class OrderViewSet(CustomModelViewSet):
  53. permission_classes = [isLogin]
  54. queryset = Order.objects.filter()
  55. serializer_class = OrderSerializer
  56. def filter_queryset(self, queryset):
  57. queryset = queryset.filter()
  58. f = OrderFilter(self.request.GET, queryset=queryset)
  59. return f.qs
  60. def paginate_queryset(self, queryset):
  61. if self.paginator is None or self.request.GET.get('export'):
  62. return None
  63. return self.paginator.paginate_queryset(queryset, self.request, view=self)
  64. class GetDetailsView(APIView):
  65. permission_classes = [isLogin]
  66. def get(self, request):
  67. # 进度明细
  68. order_id = request.GET.get('order_id')
  69. details = ProgressDetails.objects.filter(order_id=order_id).order_by('-operation_time')
  70. data = ProgressDetailsSerializer(details, many=True).data
  71. return response_ok(data)
  72. class GetFilesView(APIView):
  73. permission_classes = [isLogin]
  74. def get(self, request):
  75. # 附件内容
  76. id = request.GET.get('id')
  77. images = Upload.objects.filter(progress_details_id=id)
  78. img_data = UploadSerializer(images, many=True).data
  79. return response_ok(img_data)