views.py 3.3 KB

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