# coding=utf-8 from django.db import transaction from rest_framework.decorators import action from rest_framework import generics from utils import response_ok from utils.custom_modelviewset import CustomModelViewSet from apps.account import tenant_log from apps.foundation.models import BizLog from rest_framework.exceptions import NotFound from .serializers import * from apps.customer.filters import * from apps.vehicle_order.filters import * from apps.product_order.filters import * class VhicleDriveReserveViewSet(generics.ListAPIView): queryset = VhicleDriveReserve.objects.filter(delete=False) serializer_class = VhicleDriveReserveSerializer def filter_queryset(self, queryset): f = VhicleDriveReserveFilter(self.request.GET, queryset=queryset) return f.qs def list(self, request, *args, **kwargs): try: data = super(VhicleDriveReserveViewSet, self).list(request) except NotFound: return response_ok([]) return data class VhicleInquiryViewSet(generics.ListAPIView): queryset = VhicleInquiry.objects.filter(delete=False) serializer_class = VhicleInquirySerializer def filter_queryset(self, queryset): f = VhicleInquiryFilter(self.request.GET, queryset=queryset) return f.qs def list(self, request, *args, **kwargs): try: data = super(VhicleInquiryViewSet, self).list(request) except NotFound: return response_ok([]) return data class UsedVhicleInquiryViewSet(generics.ListAPIView): queryset = UsedVhicleInquiry.objects.filter(delete=False) serializer_class = UsedVhicleInquirySerializer def filter_queryset(self, queryset): f = UsedVhicleInquiryFilter(self.request.GET, queryset=queryset) return f.qs def list(self, request, *args, **kwargs): try: data = super(UsedVhicleInquiryViewSet, self).list(request) except NotFound: return response_ok([]) return data class UsedVhicleEstimateViewSet(generics.ListAPIView): queryset = UsedVhicleEstimate.objects.filter(delete=False) serializer_class = UsedVhicleEstimateSerializer def filter_queryset(self, queryset): f = UsedVhicleEstimateFilter(self.request.GET, queryset=queryset) return f.qs def list(self, request, *args, **kwargs): try: data = super(UsedVhicleEstimateViewSet, self).list(request) except NotFound: return response_ok([]) return data class ProductOrderViewSet(generics.ListAPIView): queryset = ProductOrder.objects.filter(delete=False) serializer_class = ProductOrderSerializer def filter_queryset(self, queryset): f = ProductOrderFilter(self.request.GET, queryset=queryset) return f.qs def list(self, request, *args, **kwargs): try: data = super(ProductOrderViewSet, self).list(request) except NotFound: return response_ok([]) return data class CustomerVehicleViewSet(generics.ListAPIView): queryset = CustomerVehicle.objects.filter() serializer_class = CustomerVehicleSerializer def filter_queryset(self, queryset): queryset = queryset.filter() f = CustomerVehicleFilter(self.request.GET, queryset=queryset) return f.qs def list(self, request, *args, **kwargs): try: data = super(CustomerVehicleViewSet, self).list(request) except NotFound: return response_ok([]) return data class CustomerAddressViewSet(generics.ListAPIView): queryset = CustomerAddress.objects.filter(delete=False) serializer_class = CustomerAddressSerializer def filter_queryset(self, queryset): queryset = queryset.filter() f = CustomerAddressFilter(self.request.GET, queryset=queryset) return f.qs def list(self, request, *args, **kwargs): try: data = super(CustomerAddressViewSet, self).list(request) except NotFound: return response_ok([]) return data def perform_create(self, serializer): super(CustomerAddressViewSet, self).perform_create(serializer) instance = serializer.instance validated_data = serializer.validated_data tenant_log(instance.customer.user, BizLog.INSERT, u'客户添加收货地址,id=%d' % instance.id, validated_data) @action(methods=['post'], detail=True) def addr_update(self, request, *args, **kwargs): with transaction.atomic(): instance = self.get_object() serializer = self.get_serializer(instance, data=request.data) serializer.is_valid(raise_exception=True) serializer.save() instance = serializer.instance validated_data = serializer.validated_data tenant_log(instance.customer.user, BizLog.UPDATE, u'客户修改收货地址,id=%d' % instance.id, validated_data) return response_ok() @action(methods=['get'], detail=True) def addr_destroy(self, request, *args, **kwargs): with transaction.atomic(): instance = self.get_object() queryset = self.get_queryset().filter(customer=self.request.customer).exclude(id=instance.id) instance.destory(queryset) tenant_log(instance.customer.user, BizLog.INSERT, u'客户删除收货地址,id=%d' % instance.id) return response_ok() @action(methods=['get'], detail=True) def set_default(self, request, *args, **kwargs): with transaction.atomic(): instance = self.get_object() self.get_queryset().filter(customer=self.request.customer, default=True).update(default=False) instance.default = True instance.save() tenant_log(instance.customer.user, BizLog.INSERT, u'客户设置默认收货地址,id=%d' % instance.id) return response_ok()