views.py 4.5 KB

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