serializers.py 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192
  1. # coding=utf-8
  2. from django.db.models import Q
  3. from rest_framework import serializers
  4. from apps.customer.models import *
  5. from apps.vehicle_order.models import *
  6. from apps.product_order.models import *
  7. from apps.base import Formater
  8. from utils.exceptions import CustomError
  9. from apps.maint_order.models import MaintOrderReserve
  10. class CustomerVehicleSerializer(serializers.ModelSerializer):
  11. class Meta:
  12. model = CustomerVehicle
  13. fields = '__all__'
  14. def create(self, validated_data):
  15. customer = self.context['request'].customer
  16. validated_data['customer'] = customer
  17. instance = super(CustomerVehicleSerializer, self).create(validated_data)
  18. return instance
  19. class CustomerAddressSerializer(serializers.ModelSerializer):
  20. full_addr = serializers.SerializerMethodField()
  21. def get_full_addr(self, obj):
  22. full_addr = obj.area + obj.addr
  23. return full_addr
  24. class Meta:
  25. model = CustomerAddress
  26. fields = '__all__'
  27. def create(self, validated_data):
  28. customer = self.context['request'].customer
  29. validated_data['customer'] = customer
  30. if validated_data['default']:
  31. CustomerAddress.objects.filter(customer=customer).update(default=False)
  32. instance = super(CustomerAddressSerializer, self).create(validated_data)
  33. return instance
  34. class ProductOrderSerializer(serializers.ModelSerializer):
  35. product_name = serializers.CharField(source='product.name', read_only=True)
  36. name = serializers.CharField(source='customer.name', read_only=True)
  37. customer_name = serializers.CharField(source='customer_address.name', read_only=True)
  38. customer_tel = serializers.CharField(source='customer_address.tel', read_only=True)
  39. area = serializers.CharField(source='customer_address.area', read_only=True)
  40. addr = serializers.CharField(source='customer_address.addr', read_only=True)
  41. status_text = serializers.CharField(source='get_status_display', read_only=True)
  42. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  43. price = serializers.SerializerMethodField()
  44. amount = serializers.SerializerMethodField()
  45. def get_price(self, obj):
  46. return Formater.formatPriceShow(obj.price)
  47. def get_amount(self, obj):
  48. return Formater.formatAmountShow(obj.amount)
  49. class Meta:
  50. model = ProductOrder
  51. fields = '__all__'
  52. def create(self, validated_data):
  53. validated_data['customer'] = self.context['request'].customer
  54. validated_data['price'] = Formater.formatPrice(validated_data['price'])
  55. validated_data['amount'] = validated_data['price'] * validated_data['count']
  56. instance = super(ProductOrderSerializer, self).create(validated_data)
  57. no = instance.generateNo()
  58. instance.no = no
  59. instance.save()
  60. return instance
  61. class VehicleDriveReserveSerializer(serializers.ModelSerializer):
  62. shop_name = serializers.CharField(source='shop.name', read_only=True)
  63. brand_name = serializers.CharField(source='model.series.brand.name', read_only=True)
  64. series_name = serializers.CharField(source='model.series.name', read_only=True)
  65. model_name = serializers.CharField(source='model.name', read_only=True)
  66. customer_name = serializers.CharField(source='customer.name', read_only=True)
  67. status_text = serializers.CharField(source='get_status_display', read_only=True)
  68. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  69. date = serializers.DateField(format='%Y-%m-%d')
  70. img1_url = serializers.SerializerMethodField()
  71. img2_url = serializers.SerializerMethodField()
  72. def get_img1_url(self, obj):
  73. if obj.img1:
  74. return '%s%s' % (settings.MEDIA_URL, obj.img1.picture)
  75. return ''
  76. def get_img2_url(self, obj):
  77. if obj.img2:
  78. return '%s%s' % (settings.MEDIA_URL, obj.img2.picture)
  79. return ''
  80. class Meta:
  81. model = VehicleDriveReserve
  82. fields = '__all__'
  83. def create(self, validated_data):
  84. customer = self.context['request'].customer
  85. validated_data['customer'] = customer
  86. instance = super(VehicleDriveReserveSerializer, self).create(validated_data)
  87. return instance
  88. class VehicleInquirySerializer(serializers.ModelSerializer):
  89. shop_name = serializers.CharField(source='shop.name', read_only=True)
  90. brand_name = serializers.CharField(source='model.series.brand.name', read_only=True)
  91. series_name = serializers.CharField(source='model.series.name', read_only=True)
  92. model_name = serializers.CharField(source='model.name', read_only=True)
  93. customer_name = serializers.CharField(source='customer.name', read_only=True)
  94. status_text = serializers.CharField(source='get_status_display', read_only=True)
  95. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  96. displace_text = serializers.SerializerMethodField()
  97. def get_displace_text(self, obj):
  98. return obj.displace and u'是' or u'否'
  99. class Meta:
  100. model = VehicleInquiry
  101. fields = '__all__'
  102. def create(self, validated_data):
  103. customer = self.context['request'].customer
  104. validated_data['customer'] = customer
  105. instance = super(VehicleInquirySerializer, self).create(validated_data)
  106. return instance
  107. class UsedVehicleInquirySerializer(serializers.ModelSerializer):
  108. brand_name = serializers.CharField(source='brand.name', read_only=True)
  109. customer_name = serializers.CharField(source='customer.name', read_only=True)
  110. customer_tel = serializers.CharField(source='customer.tel', read_only=True)
  111. status_text = serializers.CharField(source='get_status_display', read_only=True)
  112. gender_text = serializers.CharField(source='get_gender_display', read_only=True)
  113. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  114. class Meta:
  115. model = UsedVehicleInquiry
  116. fields = '__all__'
  117. def create(self, validated_data):
  118. customer = self.context['request'].customer
  119. validated_data['customer'] = customer
  120. instance = super(UsedVehicleInquirySerializer, self).create(validated_data)
  121. return instance
  122. class UsedVehicleEstimateSerializer(serializers.ModelSerializer):
  123. brand_name = serializers.CharField(source='brand.name', read_only=True)
  124. customer_name = serializers.CharField(source='customer.name', read_only=True)
  125. customer_tel = serializers.CharField(source='customer.tel', read_only=True)
  126. status_text = serializers.CharField(source='get_status_display', read_only=True)
  127. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  128. plate_date = serializers.DateField(format='%Y-%m-%d')
  129. class Meta:
  130. model = UsedVehicleEstimate
  131. fields = '__all__'
  132. def create(self, validated_data):
  133. customer = self.context['request'].customer
  134. validated_data['customer'] = customer
  135. instance = super(UsedVehicleEstimateSerializer, self).create(validated_data)
  136. return instance
  137. class MaintOrderReserveSerializer(serializers.ModelSerializer):
  138. shop_name = serializers.CharField(source='shop.name', read_only=True)
  139. model_name = serializers.CharField(source='vehicle.model', read_only=True)
  140. customer_name = serializers.CharField(source='customer.name', read_only=True)
  141. status_text = serializers.CharField(source='get_status_display', read_only=True)
  142. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  143. date = serializers.DateField(format='%Y-%m-%d')
  144. class Meta:
  145. model = MaintOrderReserve
  146. fields = '__all__'
  147. def create(self, validated_data):
  148. customer = self.context['request'].customer
  149. validated_data['customer'] = customer
  150. instance = super(MaintOrderReserveSerializer, self).create(validated_data)
  151. return instance