views.py 3.4 KB

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