views.py 3.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. # coding=utf-8
  2. from rest_framework.views import APIView
  3. from django.db.models import Q
  4. from django.utils import timezone
  5. from rest_framework.decorators import action
  6. from utils.custom_modelviewset import CustomModelViewSet
  7. from utils import response_ok, response_error
  8. from utils.exceptions import CustomError
  9. from apps.option.models import Option
  10. from apps.option.serializers import OptionComboboxSerializer
  11. from .models import ReportCustomer
  12. from .serializers import ReportCustomerSerializer
  13. from .filters import ReportCustomerFilter
  14. class ReportCustomerViewSet(CustomModelViewSet):
  15. permission_classes = []
  16. queryset = ReportCustomer.objects.filter()
  17. serializer_class = ReportCustomerSerializer
  18. def filter_queryset(self, queryset):
  19. queryset = queryset.filter()
  20. f = ReportCustomerFilter(self.request.GET, queryset=queryset)
  21. return f.qs
  22. def perform_create(self, serializer):
  23. super(ReportCustomerViewSet, self).perform_create(serializer)
  24. instance = serializer.instance
  25. validated_data = serializer.validated_data
  26. def perform_update(self, serializer):
  27. super(ReportCustomerViewSet, self).perform_update(serializer)
  28. instance = serializer.instance
  29. validated_data = serializer.validated_data
  30. def perform_destroy(self, instance):
  31. super(ReportCustomerViewSet, self).perform_destroy(instance)
  32. @action(methods=['post'], detail=False)
  33. def check(self, request, pk):
  34. # 审核
  35. report_status = request.POST.get('report_status')
  36. try:
  37. instance = ReportCustomer.objects.filter(id=pk).first()
  38. if not instance:
  39. raise CustomError('当前客户报备信息有误!')
  40. if report_status == ReportCustomer.REPEAT_REPORT:
  41. raise CustomError('当前客户报备状态为重复报备!')
  42. if instance.report_status == ReportCustomer.CHECKED and report_status == ReportCustomer.CHECKED:
  43. # 撞单
  44. instance.check_user = self.request.user
  45. instance.report_status = ReportCustomer.REPEAT_REPORT
  46. instance.check_time = timezone.now()
  47. instance.save()
  48. if instance.report_status == ReportCustomer.NOT_CHECKED and report_status == ReportCustomer.CHECKED:
  49. instance.check_user = self.request.user
  50. instance.report_status = ReportCustomer.CHECKED
  51. instance.check_time = timezone.now()
  52. instance.save()
  53. except CustomError as e:
  54. return response_error(e.get_error_msg())
  55. except Exception as e:
  56. return response_error(str(e))
  57. return response_ok('审核完成!')
  58. class ReportCustomerDictView(APIView):
  59. permission_classes = []
  60. def get(self, request):
  61. scouce = Option.objects.filter(type=Option.CUSTOMER_SOURCE , enable=True)
  62. project = Option.objects.filter(type=Option.CATEGORY, enable=True)
  63. serializer_scouce = OptionComboboxSerializer(scouce, many=True)
  64. serializer_project = OptionComboboxSerializer(project, many=True)
  65. return response_ok({
  66. 'source': serializer_scouce.data,
  67. 'project': serializer_project.data,
  68. })