views.py 2.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  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. class GetProcessView(APIView):
  15. permission_classes = [isLogin]
  16. def get(self, request):
  17. customer_id = request.query_params.get('customer_id')
  18. instance = NewCustomer.objects.filter(id=customer_id).first()
  19. if not instance:
  20. raise CustomError('当前客户信息有误,请刷新重试!')
  21. if instance.stage_progress.end_stage:
  22. raise CustomError('当前客户进度已到最后阶段,请勿重复更新!')
  23. order = Order.objects.filter(customer=instance).first()
  24. if order and order.status == Order.WAIT_DISPATCH:
  25. data = {
  26. 'error': True,
  27. 'error_message': u'当前客户订单等待分配中,请勿重复更新!',
  28. }
  29. return response_ok(data)
  30. option = Option.objects.filter(type=instance.stage_progress.type, sort__gt=instance.stage_progress.sort,
  31. enable=True).order_by('sort').first()
  32. if option:
  33. data = {
  34. 'now_process_text':instance.stage_progress.name,
  35. 'next_process_text':option.name,
  36. 'next_process_id':option.id,
  37. }
  38. return response_ok(data)
  39. else:
  40. data = {
  41. 'error': True,
  42. 'error_message': u'未找到下个阶段进度,请联系管理员设置!',
  43. }
  44. return response_ok(data)
  45. class OrderViewSet(CustomModelViewSet):
  46. permission_classes = [isLogin]
  47. queryset = Order.objects.filter()
  48. serializer_class = OrderSerializer
  49. def filter_queryset(self, queryset):
  50. queryset = queryset.filter()
  51. f = OrderFilter(self.request.GET, queryset=queryset)
  52. return f.qs
  53. def paginate_queryset(self, queryset):
  54. if self.paginator is None or self.request.GET.get('export'):
  55. return None
  56. return self.paginator.paginate_queryset(queryset, self.request, view=self)
  57. class GetDetailsView(APIView):
  58. permission_classes = [isLogin]
  59. def get(self, request):
  60. order_id = request.GET.get('order_id')
  61. details = ProgressDetails.objects.filter(order_id=order_id).order_by('-operation_time')
  62. data = []
  63. for detail in details:
  64. dict = detail.get_details()
  65. data.append(dict)
  66. return response_ok(data)