views.py 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. # coding=utf-8
  2. from utils.custom_modelviewset import CustomModelViewSet
  3. from django.db.models import Q
  4. from django.utils import timezone
  5. from rest_framework.decorators import action
  6. from rest_framework.views import APIView
  7. from django.conf import settings
  8. from utils import response_ok, response_error
  9. from utils.exceptions import CustomError
  10. from apps.log.models import BizLog
  11. from .models import GeneralAgent,Agent,Store
  12. from .serializers import GeneralAgentSerializer,AgentSerializer,StoreSerializer
  13. from .filters import GeneralAgentFilter,AgentFilter,StoreFilter
  14. from utils.permission import isLogin, permission_required
  15. from apps.agent.serializers import AgentComboboxSerializer,StoreComboboxSerializer
  16. class GeneralAgentViewSet(CustomModelViewSet):
  17. permission_classes = []
  18. queryset = GeneralAgent.objects.filter()
  19. serializer_class = GeneralAgentSerializer
  20. def filter_queryset(self, queryset):
  21. queryset = queryset.filter()
  22. f = GeneralAgentFilter(self.request.GET, queryset=queryset)
  23. return f.qs
  24. def perform_create(self, serializer):
  25. super(GeneralAgentViewSet, self).perform_create(serializer)
  26. instance = serializer.instance
  27. validated_data = serializer.validated_data
  28. BizLog.objects.addnew(self.request.user, BizLog.INSERT,
  29. u'添加总代理[%s],id=%d' % (instance.name, instance.id), validated_data)
  30. def destroy(self, request, *args, **kwargs):
  31. instance = self.get_object()
  32. BizLog.objects.addnew(self.request.user, BizLog.DELETE,
  33. u'删除总代理[%s],id=%d' % (instance.name, instance.id))
  34. super(GeneralAgentViewSet, self).perform_destroy(instance)
  35. return response_ok()
  36. class AgentViewSet(CustomModelViewSet):
  37. permission_classes = []
  38. queryset = Agent.objects.filter()
  39. serializer_class = AgentSerializer
  40. @permission_required('agent.view_agent')
  41. def filter_queryset(self, queryset):
  42. queryset = queryset.filter()
  43. f = AgentFilter(self.request.GET, queryset=queryset)
  44. return f.qs
  45. @permission_required('agent.add_agent')
  46. def perform_create(self, serializer):
  47. super(AgentViewSet, self).perform_create(serializer)
  48. instance = serializer.instance
  49. validated_data = serializer.validated_data
  50. BizLog.objects.addnew(self.request.user, BizLog.INSERT,
  51. u'添加代理商[%s],id=%d' % (instance.name, instance.id), validated_data)
  52. @permission_required('agent.delete_agent')
  53. def destroy(self, request, *args, **kwargs):
  54. instance = self.get_object()
  55. BizLog.objects.addnew(self.request.user, BizLog.DELETE,
  56. u'删除代理商[%s],id=%d' % (instance.name, instance.id))
  57. super(AgentViewSet, self).perform_destroy(instance)
  58. return response_ok()
  59. class StoreViewSet(CustomModelViewSet):
  60. permission_classes = []
  61. queryset = Store.objects.filter()
  62. serializer_class = StoreSerializer
  63. @permission_required('agent.view_store')
  64. def filter_queryset(self, queryset):
  65. queryset = queryset.filter()
  66. f = StoreFilter(self.request.GET, queryset=queryset)
  67. return f.qs
  68. @permission_required('agent.add_store')
  69. def perform_create(self, serializer):
  70. super(StoreViewSet, self).perform_create(serializer)
  71. instance = serializer.instance
  72. validated_data = serializer.validated_data
  73. BizLog.objects.addnew(self.request.user, BizLog.INSERT,
  74. u'添加门店[%s],id=%d' % (instance.name, instance.id), validated_data)
  75. @permission_required('agent.delete_store')
  76. def destroy(self, request, *args, **kwargs):
  77. instance = self.get_object()
  78. BizLog.objects.addnew(self.request.user, BizLog.DELETE,
  79. u'删除门店[%s],id=%d' % (instance.name, instance.id))
  80. super(StoreViewSet, self).perform_destroy(instance)
  81. return response_ok()
  82. @permission_required('agent.check_store')
  83. @action(methods=['post'], detail=True)
  84. def check(self, request, pk):
  85. # 审核
  86. status = request.POST.get('status')
  87. try:
  88. instance = Store.objects.filter(id=pk).first()
  89. if not instance:
  90. raise CustomError('当前门店信息有误!')
  91. if instance.status > settings.DEFAULT:
  92. raise CustomError('当前企业已审核!')
  93. instance.check_user = self.request.user
  94. instance.status = status
  95. instance.check_time = timezone.now()
  96. instance.save()
  97. BizLog.objects.addnew(request.user, BizLog.INSERT,
  98. u'审核门店[%s]状态为[%s],id=%d' % (instance.name, status, instance.id))
  99. except CustomError as e:
  100. return response_error(e.get_error_msg())
  101. except Exception as e:
  102. return response_error(str(e))
  103. return response_ok('审核完成!')
  104. class AgentDictView(APIView):
  105. permission_classes = [isLogin, ]
  106. def get(self, request):
  107. rows = Agent.objects.filter(Q(create_user=request.user) | Q(id=request.user.agent_id))
  108. agents = AgentComboboxSerializer(rows, many=True).data
  109. stores = []
  110. for row in rows:
  111. store = Store.objects.filter(agent=row, enable=True, end_date__gte=timezone.now().date())
  112. store_serializer = StoreComboboxSerializer(store, many=True).data
  113. stores.extend(store_serializer)
  114. return response_ok({
  115. 'agents': agents,
  116. 'stores': stores,
  117. })