serializers.py 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. # coding=utf-8
  2. from django.conf import settings
  3. from rest_framework import serializers
  4. from apps.vehicle.models import Brand, Series, Model, VehicleImg
  5. from apps.images.models import Images
  6. from utils.booleancharfield import PriceShowCharField
  7. from apps.base import Formater
  8. class BrandSerializer(serializers.ModelSerializer):
  9. enabled_text = serializers.SerializerMethodField()
  10. def get_enabled_text(self, obj):
  11. if obj.enabled:
  12. return u'是'
  13. return u'否'
  14. class Meta:
  15. model = Brand
  16. fields = '__all__'
  17. def create(self, validated_data):
  18. instance = super(BrandSerializer, self).create(validated_data)
  19. return instance
  20. def update(self, instance, validated_data):
  21. instance = super(BrandSerializer, self).update(instance, validated_data)
  22. return instance
  23. class SeriesSerializer(serializers.ModelSerializer):
  24. brand_name = serializers.CharField(source='brand.name', read_only=True)
  25. enabled_text = serializers.SerializerMethodField()
  26. img_url = serializers.SerializerMethodField()
  27. is_hot_text = serializers.SerializerMethodField()
  28. def get_is_hot_text(self, obj):
  29. if obj.is_hot:
  30. return u'是'
  31. return u'否'
  32. def get_enabled_text(self, obj):
  33. if obj.enabled:
  34. return u'是'
  35. return u'否'
  36. def get_img_url(self, obj):
  37. if obj.thumbnail:
  38. return '%s%s' % (settings.MEDIA_URL, obj.thumbnail.picture)
  39. return ''
  40. class Meta:
  41. model = Series
  42. fields = '__all__'
  43. def create(self, validated_data):
  44. user = self.context['request'].user
  45. file = self.context['request'].FILES.get('image', None)
  46. if file:
  47. validated_data['thumbnail'] = Images.objects.employee_addnew(user, Images.VEHICLE_SERIES_THUMBNAIL,
  48. file)
  49. instance = super(SeriesSerializer, self).create(validated_data)
  50. return instance
  51. class ModelSerializer(serializers.ModelSerializer):
  52. series_name = serializers.CharField(source='series.name', read_only=True)
  53. brand_name = serializers.CharField(source='series.brand.name', read_only=True)
  54. enabled_text = serializers.SerializerMethodField()
  55. thumbnail_url = serializers.SerializerMethodField()
  56. price = PriceShowCharField()
  57. sale_price = PriceShowCharField()
  58. def get_enabled_text(self, obj):
  59. if obj.enabled:
  60. return u'是'
  61. return u'否'
  62. def get_thumbnail_url(self, obj):
  63. if obj.thumbnail:
  64. return '%s%s' % (settings.MEDIA_URL, obj.thumbnail.picture)
  65. return ''
  66. class Meta:
  67. model = Model
  68. fields = '__all__'
  69. def create(self, validated_data):
  70. user = self.context['request'].user
  71. thumbnail = self.context['request'].FILES.get('image', None)
  72. if thumbnail:
  73. validated_data['thumbnail'] = Images.objects.employee_addnew(user, Images.VEHICLE_MODEL_THUMBNAIL,
  74. thumbnail)
  75. instance = super(ModelSerializer, self).create(validated_data)
  76. return instance
  77. def validate(self, attrs):
  78. if 'price' in attrs:
  79. attrs['price'] = Formater.formatPrice(attrs['price'])
  80. if 'sale_price' in attrs:
  81. attrs['sale_price'] = Formater.formatPrice(attrs['sale_price'])
  82. return attrs
  83. class VehicleImgSerializer(serializers.ModelSerializer):
  84. img_url = serializers.SerializerMethodField()
  85. def get_img_url(self, obj):
  86. if obj.img:
  87. return '%s%s' % (settings.MEDIA_URL, obj.img.picture)
  88. return ''
  89. class Meta:
  90. model = VehicleImg
  91. fields = '__all__'