# coding=utf-8 from django.conf import settings from django.db.models import Q from rest_framework import serializers from apps.customer.models import CustomerVehicle, CustomerAddress from apps.vehicle_order.models import * from apps.product_order.models import * from apps.base import Formater from utils.exceptions import CustomError class CustomerVehicleSerializer(serializers.ModelSerializer): class Meta: model = CustomerVehicle fields = '__all__' class CustomerAddressSerializer(serializers.ModelSerializer): full_addr = serializers.SerializerMethodField() def get_full_addr(self, obj): full_addr = obj.area + obj.addr return full_addr class Meta: model = CustomerAddress fields = '__all__' def create(self, validated_data): customer = self.context['request'].customer validated_data['customer'] = customer if validated_data['default']: CustomerAddress.objects.filter(Q(customer=customer), Q(delete=False)).update(default=False) instance = super(CustomerAddressSerializer, self).create(validated_data) return instance def update(self, instance, validated_data): if instance.delete: raise CustomError(u'该收货地址已经被删除,禁止操作') if validated_data['default']: CustomerAddress.objects.filter(Q(customer=instance.customer), Q(delete=False), ~Q(id=instance.id)).update(default=False) instance = super(CustomerAddressSerializer, self).update(instance, validated_data) return instance class ProductOrderSerializer(serializers.ModelSerializer): product_name = serializers.CharField(source='product.name', read_only=True) name = serializers.CharField(source='customer.name', read_only=True) customer_name = serializers.CharField(source='customer_address.name', read_only=True) customer_tel = serializers.CharField(source='customer_address.tel', read_only=True) area = serializers.CharField(source='customer_address.area', read_only=True) addr = serializers.CharField(source='customer_address.addr', read_only=True) status_text = serializers.CharField(source='get_status_display', read_only=True) create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True) price = serializers.SerializerMethodField() amount = serializers.SerializerMethodField() def get_price(self, obj): return Formater.formatPriceShow(obj.price) def get_amount(self, obj): return Formater.formatAmountShow(obj.amount) class Meta: model = ProductOrder fields = '__all__' class VhicleDriveReserveSerializer(serializers.ModelSerializer): shop_name = serializers.CharField(source='shop.name', read_only=True) brand_name = serializers.CharField(source='model.series.brand.name', read_only=True) series_name = serializers.CharField(source='model.series.name', read_only=True) model_name = serializers.CharField(source='model.name', read_only=True) customer_name = serializers.CharField(source='customer.name', read_only=True) status_text = serializers.CharField(source='get_status_display', read_only=True) create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True) date = serializers.DateField(format='%Y-%m-%d') img1_url = serializers.SerializerMethodField() img2_url = serializers.SerializerMethodField() def get_img1_url(self, obj): if obj.img1: return '%s%s' % (settings.MEDIA_URL, obj.img1.picture) return '' def get_img2_url(self, obj): if obj.img2: return '%s%s' % (settings.MEDIA_URL, obj.img2.picture) return '' class Meta: model = VhicleDriveReserve fields = '__all__' class VhicleInquirySerializer(serializers.ModelSerializer): shop_name = serializers.CharField(source='shop.name', read_only=True) brand_name = serializers.CharField(source='model.series.brand.name', read_only=True) series_name = serializers.CharField(source='model.series.name', read_only=True) model_name = serializers.CharField(source='model.name', read_only=True) customer_name = serializers.CharField(source='customer.name', read_only=True) status_text = serializers.CharField(source='get_status_display', read_only=True) create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True) displace_text = serializers.SerializerMethodField() def get_displace_text(self, obj): return obj.displace and u'是' or u'否' class Meta: model = VhicleInquiry fields = '__all__' class UsedVhicleInquirySerializer(serializers.ModelSerializer): brand_name = serializers.CharField(source='brand.name', read_only=True) customer_name = serializers.CharField(source='customer.name', read_only=True) customer_tel = serializers.CharField(source='customer.tel', read_only=True) status_text = serializers.CharField(source='get_status_display', read_only=True) gender_text = serializers.CharField(source='get_gender_display', read_only=True) create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True) class Meta: model = UsedVhicleInquiry fields = '__all__' class UsedVhicleEstimateSerializer(serializers.ModelSerializer): brand_name = serializers.CharField(source='brand.name', read_only=True) customer_name = serializers.CharField(source='customer.name', read_only=True) customer_tel = serializers.CharField(source='customer.tel', read_only=True) status_text = serializers.CharField(source='get_status_display', read_only=True) create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True) plate_date = serializers.DateField(format='%Y-%m-%d') class Meta: model = UsedVhicleEstimate fields = '__all__'