views.py 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. # coding=utf-8
  2. from django.db import transaction
  3. from rest_framework.decorators import action
  4. from rest_framework import generics
  5. from utils import response_ok
  6. from utils.custom_modelviewset import CustomModelViewSet
  7. from apps.account import tenant_log
  8. from apps.foundation.models import BizLog
  9. from rest_framework.exceptions import NotFound
  10. from .serializers import *
  11. from apps.customer.filters import *
  12. from apps.vehicle_order.filters import *
  13. from apps.product_order.filters import *
  14. class VhicleDriveReserveViewSet(generics.ListAPIView):
  15. queryset = VhicleDriveReserve.objects.filter(delete=False)
  16. serializer_class = VhicleDriveReserveSerializer
  17. def filter_queryset(self, queryset):
  18. f = VhicleDriveReserveFilter(self.request.GET, queryset=queryset)
  19. return f.qs
  20. def list(self, request, *args, **kwargs):
  21. try:
  22. data = super(VhicleDriveReserveViewSet, self).list(request)
  23. except NotFound:
  24. return response_ok([])
  25. return data
  26. class VhicleInquiryViewSet(generics.ListAPIView):
  27. queryset = VhicleInquiry.objects.filter(delete=False)
  28. serializer_class = VhicleInquirySerializer
  29. def filter_queryset(self, queryset):
  30. f = VhicleInquiryFilter(self.request.GET, queryset=queryset)
  31. return f.qs
  32. def list(self, request, *args, **kwargs):
  33. try:
  34. data = super(VhicleInquiryViewSet, self).list(request)
  35. except NotFound:
  36. return response_ok([])
  37. return data
  38. class UsedVhicleInquiryViewSet(generics.ListAPIView):
  39. queryset = UsedVhicleInquiry.objects.filter(delete=False)
  40. serializer_class = UsedVhicleInquirySerializer
  41. def filter_queryset(self, queryset):
  42. f = UsedVhicleInquiryFilter(self.request.GET, queryset=queryset)
  43. return f.qs
  44. def list(self, request, *args, **kwargs):
  45. try:
  46. data = super(UsedVhicleInquiryViewSet, self).list(request)
  47. except NotFound:
  48. return response_ok([])
  49. return data
  50. class UsedVhicleEstimateViewSet(generics.ListAPIView):
  51. queryset = UsedVhicleEstimate.objects.filter(delete=False)
  52. serializer_class = UsedVhicleEstimateSerializer
  53. def filter_queryset(self, queryset):
  54. f = UsedVhicleEstimateFilter(self.request.GET, queryset=queryset)
  55. return f.qs
  56. def list(self, request, *args, **kwargs):
  57. try:
  58. data = super(UsedVhicleEstimateViewSet, self).list(request)
  59. except NotFound:
  60. return response_ok([])
  61. return data
  62. class ProductOrderViewSet(generics.ListAPIView):
  63. queryset = ProductOrder.objects.filter(delete=False)
  64. serializer_class = ProductOrderSerializer
  65. def filter_queryset(self, queryset):
  66. f = ProductOrderFilter(self.request.GET, queryset=queryset)
  67. return f.qs
  68. def list(self, request, *args, **kwargs):
  69. try:
  70. data = super(ProductOrderViewSet, self).list(request)
  71. except NotFound:
  72. return response_ok([])
  73. return data
  74. class CustomerVehicleViewSet(generics.ListAPIView):
  75. queryset = CustomerVehicle.objects.filter()
  76. serializer_class = CustomerVehicleSerializer
  77. def filter_queryset(self, queryset):
  78. queryset = queryset.filter()
  79. f = CustomerVehicleFilter(self.request.GET, queryset=queryset)
  80. return f.qs
  81. def list(self, request, *args, **kwargs):
  82. try:
  83. data = super(CustomerVehicleViewSet, self).list(request)
  84. except NotFound:
  85. return response_ok([])
  86. return data
  87. class CustomerAddressViewSet(generics.ListAPIView):
  88. queryset = CustomerAddress.objects.filter(delete=False)
  89. serializer_class = CustomerAddressSerializer
  90. def filter_queryset(self, queryset):
  91. queryset = queryset.filter()
  92. f = CustomerAddressFilter(self.request.GET, queryset=queryset)
  93. return f.qs
  94. def list(self, request, *args, **kwargs):
  95. try:
  96. data = super(CustomerAddressViewSet, self).list(request)
  97. except NotFound:
  98. return response_ok([])
  99. return data
  100. def perform_create(self, serializer):
  101. super(CustomerAddressViewSet, self).perform_create(serializer)
  102. instance = serializer.instance
  103. validated_data = serializer.validated_data
  104. tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加收货地址,id=%d' % instance.id, validated_data)
  105. @action(methods=['post'], detail=True)
  106. def addr_update(self, request, *args, **kwargs):
  107. with transaction.atomic():
  108. instance = self.get_object()
  109. serializer = self.get_serializer(instance, data=request.data)
  110. serializer.is_valid(raise_exception=True)
  111. serializer.save()
  112. instance = serializer.instance
  113. validated_data = serializer.validated_data
  114. tenant_log(instance.customer.user, BizLog.UPDATE, u'客户修改收货地址,id=%d' % instance.id, validated_data)
  115. return response_ok()
  116. @action(methods=['get'], detail=True)
  117. def addr_destroy(self, request, *args, **kwargs):
  118. with transaction.atomic():
  119. instance = self.get_object()
  120. queryset = self.get_queryset().filter(customer=self.request.customer).exclude(id=instance.id)
  121. instance.destory(queryset)
  122. tenant_log(instance.customer.user, BizLog.INSERT, u'客户删除收货地址,id=%d' % instance.id)
  123. return response_ok()
  124. @action(methods=['get'], detail=True)
  125. def set_default(self, request, *args, **kwargs):
  126. with transaction.atomic():
  127. instance = self.get_object()
  128. self.get_queryset().filter(customer=self.request.customer, default=True).update(default=False)
  129. instance.default = True
  130. instance.save()
  131. tenant_log(instance.customer.user, BizLog.INSERT, u'客户设置默认收货地址,id=%d' % instance.id)
  132. return response_ok()