serializers.py 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195
  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(self.initial_data.get('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. class Meta:
  71. model = VehicleDriveReserve
  72. fields = '__all__'
  73. def create(self, validated_data):
  74. customer = self.context['request'].customer
  75. validated_data['customer'] = customer
  76. instance = super(VehicleDriveReserveSerializer, self).create(validated_data)
  77. return instance
  78. class VehicleInquirySerializer(serializers.ModelSerializer):
  79. shop_name = serializers.CharField(source='shop.name', read_only=True)
  80. brand_name = serializers.CharField(source='model.series.brand.name', read_only=True)
  81. series_name = serializers.CharField(source='model.series.name', read_only=True)
  82. model_name = serializers.CharField(source='model.name', read_only=True)
  83. customer_name = serializers.CharField(source='customer.name', read_only=True)
  84. status_text = serializers.CharField(source='get_status_display', read_only=True)
  85. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  86. displace_text = serializers.SerializerMethodField()
  87. def get_displace_text(self, obj):
  88. return obj.displace and u'是' or u'否'
  89. class Meta:
  90. model = VehicleInquiry
  91. fields = '__all__'
  92. def create(self, validated_data):
  93. customer = self.context['request'].customer
  94. validated_data['customer'] = customer
  95. instance = super(VehicleInquirySerializer, self).create(validated_data)
  96. return instance
  97. class UsedVehicleInquirySerializer(serializers.ModelSerializer):
  98. brand_name = serializers.CharField(source='brand.name', read_only=True)
  99. customer_name = serializers.CharField(source='customer.name', read_only=True)
  100. customer_tel = serializers.CharField(source='customer.tel', read_only=True)
  101. status_text = serializers.CharField(source='get_status_display', read_only=True)
  102. gender_text = serializers.CharField(source='get_gender_display', read_only=True)
  103. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  104. class Meta:
  105. model = UsedVehicleInquiry
  106. fields = '__all__'
  107. def create(self, validated_data):
  108. customer = self.context['request'].customer
  109. validated_data['customer'] = customer
  110. instance = super(UsedVehicleInquirySerializer, self).create(validated_data)
  111. return instance
  112. class UsedVehicleEstimateSerializer(serializers.ModelSerializer):
  113. brand_name = serializers.CharField(source='brand.name', read_only=True)
  114. customer_name = serializers.CharField(source='customer.name', read_only=True)
  115. status_text = serializers.CharField(source='get_status_display', read_only=True)
  116. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  117. plate_date = serializers.DateField(format='%Y-%m-%d')
  118. class Meta:
  119. model = UsedVehicleEstimate
  120. fields = '__all__'
  121. def create(self, validated_data):
  122. customer = self.context['request'].customer
  123. validated_data['customer'] = customer
  124. instance = super(UsedVehicleEstimateSerializer, self).create(validated_data)
  125. return instance
  126. class InsurConsultationSerializer(serializers.ModelSerializer):
  127. brand_name = serializers.CharField(source='brand.name', read_only=True)
  128. customer_name = serializers.CharField(source='customer.name', read_only=True)
  129. status_text = serializers.CharField(source='get_status_display', read_only=True)
  130. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  131. class Meta:
  132. model = InsurConsultation
  133. fields = '__all__'
  134. def create(self, validated_data):
  135. customer = self.context['request'].customer
  136. validated_data['customer'] = customer
  137. instance = super(InsurConsultationSerializer, self).create(validated_data)
  138. return instance
  139. class MaintOrderReserveSerializer(serializers.ModelSerializer):
  140. shop_name = serializers.CharField(source='shop.name', read_only=True)
  141. model_name = serializers.CharField(source='vehicle.model', read_only=True)
  142. customer_name = serializers.CharField(source='customer.name', read_only=True)
  143. status_text = serializers.CharField(source='get_status_display', read_only=True)
  144. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  145. date = serializers.DateField(format='%Y-%m-%d')
  146. class Meta:
  147. model = MaintOrderReserve
  148. fields = '__all__'
  149. def create(self, validated_data):
  150. customer = self.context['request'].customer
  151. validated_data['customer'] = customer
  152. instance = super(MaintOrderReserveSerializer, self).create(validated_data)
  153. return instance