views.py 3.6 KB

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