views.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  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.views import APIView
  6. from utils import response_ok, response_error
  7. from .models import Agent,Store
  8. from .serializers import AgentSerializer,StoreSerializer
  9. from .filters import AgentFilter,StoreFilter
  10. from utils.permission import isLogin
  11. from apps.agent.serializers import AgentComboboxSerializer,StoreComboboxSerializer
  12. class AgentViewSet(CustomModelViewSet):
  13. permission_classes = []
  14. queryset = Agent.objects.filter()
  15. serializer_class = AgentSerializer
  16. def filter_queryset(self, queryset):
  17. queryset = queryset.filter()
  18. f = AgentFilter(self.request.GET, queryset=queryset)
  19. return f.qs
  20. def perform_create(self, serializer):
  21. super(AgentViewSet, self).perform_create(serializer)
  22. instance = serializer.instance
  23. validated_data = serializer.validated_data
  24. def destroy(self, request, *args, **kwargs):
  25. instance = self.get_object()
  26. super(AgentViewSet, self).destroy(self, request, *args, **kwargs)
  27. return response_ok()
  28. class StoreViewSet(CustomModelViewSet):
  29. permission_classes = []
  30. queryset = Store.objects.filter()
  31. serializer_class = StoreSerializer
  32. def filter_queryset(self, queryset):
  33. queryset = queryset.filter()
  34. f = StoreFilter(self.request.GET, queryset=queryset)
  35. return f.qs
  36. def perform_create(self, serializer):
  37. super(StoreViewSet, self).perform_create(serializer)
  38. instance = serializer.instance
  39. validated_data = serializer.validated_data
  40. def destroy(self, request, *args, **kwargs):
  41. instance = self.get_object()
  42. super(StoreViewSet, self).destroy(self, request, *args, **kwargs)
  43. return response_ok()
  44. class AgentDictView(APIView):
  45. permission_classes = [isLogin, ]
  46. def get(self, request):
  47. rows = Agent.objects.filter(Q(create_user=request.user) | Q(id=request.user.agent_id))
  48. agents = AgentComboboxSerializer(rows, many=True).data
  49. stores = []
  50. for row in rows:
  51. store = Store.objects.filter(agent=row, enable=True, end_date__gte=timezone.now().date())
  52. store_serializer = StoreComboboxSerializer(store, many=True).data
  53. stores.append(store_serializer)
  54. return response_ok({
  55. 'agents': agents,
  56. 'stores': stores,
  57. })