serializers.py 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  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. def update(self, instance, validated_data):
  35. if instance.delete:
  36. raise CustomError(u'该收货地址已经被删除,禁止操作')
  37. if validated_data['default']:
  38. CustomerAddress.objects.filter(Q(customer=instance.customer), Q(delete=False), ~Q(id=instance.id)).update(default=False)
  39. instance = super(CustomerAddressSerializer, self).update(instance, validated_data)
  40. return instance
  41. class ProductOrderSerializer(serializers.ModelSerializer):
  42. product_name = serializers.CharField(source='product.name', read_only=True)
  43. name = serializers.CharField(source='customer.name', read_only=True)
  44. customer_name = serializers.CharField(source='customer_address.name', read_only=True)
  45. customer_tel = serializers.CharField(source='customer_address.tel', read_only=True)
  46. area = serializers.CharField(source='customer_address.area', read_only=True)
  47. addr = serializers.CharField(source='customer_address.addr', read_only=True)
  48. status_text = serializers.CharField(source='get_status_display', read_only=True)
  49. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  50. price = serializers.SerializerMethodField()
  51. amount = serializers.SerializerMethodField()
  52. def get_price(self, obj):
  53. return Formater.formatPriceShow(obj.price)
  54. def get_amount(self, obj):
  55. return Formater.formatAmountShow(obj.amount)
  56. class Meta:
  57. model = ProductOrder
  58. fields = '__all__'
  59. class VehicleDriveReserveSerializer(serializers.ModelSerializer):
  60. shop_name = serializers.CharField(source='shop.name', read_only=True)
  61. brand_name = serializers.CharField(source='model.series.brand.name', read_only=True)
  62. series_name = serializers.CharField(source='model.series.name', read_only=True)
  63. model_name = serializers.CharField(source='model.name', read_only=True)
  64. customer_name = serializers.CharField(source='customer.name', read_only=True)
  65. status_text = serializers.CharField(source='get_status_display', read_only=True)
  66. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  67. date = serializers.DateField(format='%Y-%m-%d')
  68. img1_url = serializers.SerializerMethodField()
  69. img2_url = serializers.SerializerMethodField()
  70. def get_img1_url(self, obj):
  71. if obj.img1:
  72. return '%s%s' % (settings.MEDIA_URL, obj.img1.picture)
  73. return ''
  74. def get_img2_url(self, obj):
  75. if obj.img2:
  76. return '%s%s' % (settings.MEDIA_URL, obj.img2.picture)
  77. return ''
  78. class Meta:
  79. model = VehicleDriveReserve
  80. fields = '__all__'
  81. def create(self, validated_data):
  82. customer = self.context['request'].customer
  83. validated_data['customer'] = customer
  84. instance = super(VehicleDriveReserveSerializer, self).create(validated_data)
  85. return instance
  86. class VehicleInquirySerializer(serializers.ModelSerializer):
  87. shop_name = serializers.CharField(source='shop.name', read_only=True)
  88. brand_name = serializers.CharField(source='model.series.brand.name', read_only=True)
  89. series_name = serializers.CharField(source='model.series.name', read_only=True)
  90. model_name = serializers.CharField(source='model.name', read_only=True)
  91. customer_name = serializers.CharField(source='customer.name', read_only=True)
  92. status_text = serializers.CharField(source='get_status_display', read_only=True)
  93. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  94. displace_text = serializers.SerializerMethodField()
  95. def get_displace_text(self, obj):
  96. return obj.displace and u'是' or u'否'
  97. class Meta:
  98. model = VehicleInquiry
  99. fields = '__all__'
  100. def create(self, validated_data):
  101. customer = self.context['request'].customer
  102. validated_data['customer'] = customer
  103. instance = super(VehicleInquirySerializer, self).create(validated_data)
  104. return instance
  105. class UsedVehicleInquirySerializer(serializers.ModelSerializer):
  106. brand_name = serializers.CharField(source='brand.name', read_only=True)
  107. customer_name = serializers.CharField(source='customer.name', read_only=True)
  108. customer_tel = serializers.CharField(source='customer.tel', read_only=True)
  109. status_text = serializers.CharField(source='get_status_display', read_only=True)
  110. gender_text = serializers.CharField(source='get_gender_display', read_only=True)
  111. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  112. class Meta:
  113. model = UsedVehicleInquiry
  114. fields = '__all__'
  115. def create(self, validated_data):
  116. customer = self.context['request'].customer
  117. validated_data['customer'] = customer
  118. instance = super(UsedVehicleInquirySerializer, self).create(validated_data)
  119. return instance
  120. class UsedVehicleEstimateSerializer(serializers.ModelSerializer):
  121. brand_name = serializers.CharField(source='brand.name', read_only=True)
  122. customer_name = serializers.CharField(source='customer.name', read_only=True)
  123. customer_tel = serializers.CharField(source='customer.tel', read_only=True)
  124. status_text = serializers.CharField(source='get_status_display', read_only=True)
  125. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  126. plate_date = serializers.DateField(format='%Y-%m-%d')
  127. class Meta:
  128. model = UsedVehicleEstimate
  129. fields = '__all__'
  130. def create(self, validated_data):
  131. customer = self.context['request'].customer
  132. validated_data['customer'] = customer
  133. instance = super(UsedVehicleEstimateSerializer, self).create(validated_data)
  134. return instance
  135. class MaintOrderReserveSerializer(serializers.ModelSerializer):
  136. shop_name = serializers.CharField(source='shop.name', read_only=True)
  137. model_name = serializers.CharField(source='vehicle.model', read_only=True)
  138. customer_name = serializers.CharField(source='customer.name', read_only=True)
  139. status_text = serializers.CharField(source='get_status_display', read_only=True)
  140. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  141. date = serializers.DateField(format='%Y-%m-%d')
  142. class Meta:
  143. model = MaintOrderReserve
  144. fields = '__all__'
  145. def create(self, validated_data):
  146. customer = self.context['request'].customer
  147. validated_data['customer'] = customer
  148. instance = super(MaintOrderReserveSerializer, self).create(validated_data)
  149. return instance