views.py 5.8 KB

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