123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134 |
- # coding=utf-8
- import json
- from django.conf import settings
- from rest_framework import serializers
- from apps.vehicle.models import Brand, Series, Model, VehicleImg, VehicleModelImg
- from apps.images.models import Images
- from utils.booleancharfield import PriceShowCharField
- from utils.exceptions import CustomError
- from apps.base import Formater
- class BrandSerializer(serializers.ModelSerializer):
- enabled_text = serializers.SerializerMethodField()
- def get_enabled_text(self, obj):
- if obj.enabled:
- return u'是'
- return u'否'
- class Meta:
- model = Brand
- fields = '__all__'
- def create(self, validated_data):
- instance = super(BrandSerializer, self).create(validated_data)
- return instance
- def update(self, instance, validated_data):
- instance = super(BrandSerializer, self).update(instance, validated_data)
- return instance
- class SeriesSerializer(serializers.ModelSerializer):
- brand_name = serializers.CharField(source='brand.name', read_only=True)
- enabled_text = serializers.SerializerMethodField()
- img_url = serializers.SerializerMethodField()
- is_hot_text = serializers.SerializerMethodField()
- def get_is_hot_text(self, obj):
- if obj.is_hot:
- return u'是'
- return u'否'
- def get_enabled_text(self, obj):
- if obj.enabled:
- return u'是'
- return u'否'
- def get_img_url(self, obj):
- if obj.thumbnail:
- return '%s%s' % (settings.MEDIA_URL, obj.thumbnail.picture)
- return ''
- class Meta:
- model = Series
- fields = '__all__'
- def create(self, validated_data):
- user = self.context['request'].user
- file = self.context['request'].FILES.get('image', None)
- if file:
- validated_data['thumbnail'] = Images.objects.employee_addnew(user, Images.VEHICLE_SERIES_THUMBNAIL,
- file)
- instance = super(SeriesSerializer, self).create(validated_data)
- return instance
- class ModelSerializer(serializers.ModelSerializer):
- series_name = serializers.CharField(source='series.name', read_only=True)
- brand_name = serializers.CharField(source='series.brand.name', read_only=True)
- enabled_text = serializers.SerializerMethodField()
- thumbnail_url = serializers.SerializerMethodField()
- price = PriceShowCharField()
- sale_price = PriceShowCharField()
- def get_enabled_text(self, obj):
- if obj.enabled:
- return u'是'
- return u'否'
- def get_thumbnail_url(self, obj):
- if obj.thumbnail:
- return '%s%s' % (settings.MEDIA_URL, obj.thumbnail.picture)
- return ''
- class Meta:
- model = Model
- fields = '__all__'
- def create(self, validated_data):
- user = self.context['request'].user
- thumbnail = self.context['request'].FILES.get('image', None)
- if thumbnail:
- validated_data['thumbnail'] = Images.objects.employee_addnew(user, Images.VEHICLE_MODEL_THUMBNAIL,
- thumbnail)
- instance = super(ModelSerializer, self).create(validated_data)
- return instance
- def validate(self, attrs):
- if 'price' in attrs:
- attrs['price'] = Formater.formatPrice(attrs['price'])
- if 'sale_price' in attrs:
- attrs['sale_price'] = Formater.formatPrice(attrs['sale_price'])
- return attrs
- class VehicleImgSerializer(serializers.ModelSerializer):
- img_url = serializers.SerializerMethodField()
- def get_img_url(self, obj):
- if obj.img:
- return '%s%s' % (settings.MEDIA_URL, obj.img.picture)
- return ''
- class Meta:
- model = VehicleImg
- fields = '__all__'
- class VehicleModelImgSerializer(serializers.ModelSerializer):
- img_url = serializers.SerializerMethodField()
- def get_img_url(self, obj):
- if obj.img:
- return '%s%s' % (settings.MEDIA_URL, obj.img.picture)
- return ''
- class Meta:
- model = VehicleModelImg
- fields = '__all__'
|