views.py 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. instance = NewCustomer.objects.filter(id=customer_id).first()
  24. if not instance:
  25. raise CustomError('当前客户信息有误,请刷新重试!')
  26. if instance.stage_progress.end_stage:
  27. raise CustomError('当前客户进度已到最后阶段,请勿重复更新!')
  28. order = Order.objects.filter(customer=instance).first()
  29. if order and order.status == Order.WAIT_DISPATCH:
  30. data = {
  31. 'error': True,
  32. 'error_message': u'当前客户订单等待分配中,请勿重复更新!',
  33. }
  34. return response_ok(data)
  35. option = Option.objects.filter(type=instance.stage_progress.type, sort__gt=instance.stage_progress.sort,
  36. enable=True).order_by('sort').first()
  37. if option:
  38. data = {
  39. 'now_process_text':instance.stage_progress.name,
  40. 'next_process_text':option.name,
  41. 'next_process_id':option.id,
  42. }
  43. return response_ok(data)
  44. else:
  45. data = {
  46. 'error': True,
  47. 'error_message': u'未找到下个阶段进度,请联系管理员设置!',
  48. }
  49. return response_ok(data)
  50. class OrderViewSet(CustomModelViewSet):
  51. permission_classes = [isLogin]
  52. queryset = Order.objects.filter()
  53. serializer_class = OrderSerializer
  54. def filter_queryset(self, queryset):
  55. queryset = queryset.filter()
  56. f = OrderFilter(self.request.GET, queryset=queryset)
  57. return f.qs
  58. def paginate_queryset(self, queryset):
  59. if self.paginator is None or self.request.GET.get('export'):
  60. return None
  61. return self.paginator.paginate_queryset(queryset, self.request, view=self)
  62. class GetDetailsView(APIView):
  63. permission_classes = [isLogin]
  64. def get(self, request):
  65. # 进度明细
  66. order_id = request.GET.get('order_id')
  67. details = ProgressDetails.objects.filter(order_id=order_id).order_by('-operation_time')
  68. data = ProgressDetailsSerializer(details, many=True).data
  69. return response_ok(data)
  70. class GetFilesView(APIView):
  71. permission_classes = [isLogin]
  72. def get(self, request):
  73. # 附件内容
  74. id = request.GET.get('id')
  75. images = Upload.objects.filter(progress_details_id=id)
  76. img_data = UploadSerializer(images, many=True).data
  77. return response_ok(img_data)