views.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  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
  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)