serializers.py 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206
  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. from .xgj import XGJ
  11. class CustomerVehicleSerializer(serializers.ModelSerializer):
  12. has_orders = serializers.SerializerMethodField()
  13. def get_has_orders(self, obj):
  14. abutment_xgj = Config.getConfigValue(Config.KEY_ABUTMENT_XGJ) or ''
  15. if abutment_xgj and abutment_xgj == 'true':
  16. res = XGJ.get_order(obj.id)
  17. if len(res['data']) > 0:
  18. return True
  19. return False
  20. return False
  21. class Meta:
  22. model = CustomerVehicle
  23. fields = '__all__'
  24. def create(self, validated_data):
  25. customer = self.context['request'].customer
  26. validated_data['customer'] = customer
  27. instance = super(CustomerVehicleSerializer, self).create(validated_data)
  28. return instance
  29. class CustomerAddressSerializer(serializers.ModelSerializer):
  30. full_addr = serializers.SerializerMethodField()
  31. def get_full_addr(self, obj):
  32. full_addr = obj.area + obj.addr
  33. return full_addr
  34. class Meta:
  35. model = CustomerAddress
  36. fields = '__all__'
  37. def create(self, validated_data):
  38. customer = self.context['request'].customer
  39. validated_data['customer'] = customer
  40. if validated_data['default']:
  41. CustomerAddress.objects.filter(customer=customer).update(default=False)
  42. instance = super(CustomerAddressSerializer, self).create(validated_data)
  43. return instance
  44. class ProductOrderSerializer(serializers.ModelSerializer):
  45. product_name = serializers.CharField(source='product.name', read_only=True)
  46. name = serializers.CharField(source='customer.name', read_only=True)
  47. customer_name = serializers.CharField(source='customer_address.name', read_only=True)
  48. customer_tel = serializers.CharField(source='customer_address.tel', read_only=True)
  49. area = serializers.CharField(source='customer_address.area', read_only=True)
  50. addr = serializers.CharField(source='customer_address.addr', read_only=True)
  51. status_text = serializers.CharField(source='get_status_display', read_only=True)
  52. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  53. price = serializers.SerializerMethodField()
  54. amount = serializers.SerializerMethodField()
  55. def get_price(self, obj):
  56. return Formater.formatPriceShow(obj.price)
  57. def get_amount(self, obj):
  58. return Formater.formatAmountShow(obj.amount)
  59. class Meta:
  60. model = ProductOrder
  61. fields = '__all__'
  62. def create(self, validated_data):
  63. validated_data['customer'] = self.context['request'].customer
  64. validated_data['price'] = Formater.formatPrice(self.initial_data.get('price'))
  65. validated_data['amount'] = validated_data['price'] * validated_data['count']
  66. instance = super(ProductOrderSerializer, self).create(validated_data)
  67. no = instance.generateNo()
  68. instance.no = no
  69. instance.save()
  70. return instance
  71. class VehicleDriveReserveSerializer(serializers.ModelSerializer):
  72. shop_name = serializers.CharField(source='shop.name', read_only=True)
  73. brand_name = serializers.CharField(source='model.series.brand.name', read_only=True)
  74. series_name = serializers.CharField(source='model.series.name', read_only=True)
  75. model_name = serializers.CharField(source='model.name', read_only=True)
  76. customer_name = serializers.CharField(source='customer.name', read_only=True)
  77. status_text = serializers.CharField(source='get_status_display', read_only=True)
  78. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  79. date = serializers.DateField(format='%Y-%m-%d')
  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. status_text = serializers.CharField(source='get_status_display', read_only=True)
  126. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  127. plate_date = serializers.DateField(format='%Y-%m-%d')
  128. class Meta:
  129. model = UsedVehicleEstimate
  130. fields = '__all__'
  131. def create(self, validated_data):
  132. customer = self.context['request'].customer
  133. validated_data['customer'] = customer
  134. instance = super(UsedVehicleEstimateSerializer, self).create(validated_data)
  135. return instance
  136. class InsurConsultationSerializer(serializers.ModelSerializer):
  137. brand_name = serializers.CharField(source='brand.name', 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. class Meta:
  142. model = InsurConsultation
  143. fields = '__all__'
  144. def create(self, validated_data):
  145. customer = self.context['request'].customer
  146. validated_data['customer'] = customer
  147. instance = super(InsurConsultationSerializer, self).create(validated_data)
  148. return instance
  149. class MaintOrderReserveSerializer(serializers.ModelSerializer):
  150. shop_name = serializers.CharField(source='shop.name', read_only=True)
  151. model_name = serializers.CharField(source='vehicle.model', read_only=True)
  152. customer_name = serializers.CharField(source='customer.name', read_only=True)
  153. status_text = serializers.CharField(source='get_status_display', read_only=True)
  154. create_time = serializers.DateTimeField(format='%Y-%m-%d %H:%M', read_only=True)
  155. date = serializers.DateField(format='%Y-%m-%d')
  156. class Meta:
  157. model = MaintOrderReserve
  158. fields = '__all__'
  159. def create(self, validated_data):
  160. customer = self.context['request'].customer
  161. validated_data['customer'] = customer
  162. instance = super(MaintOrderReserveSerializer, self).create(validated_data)
  163. return instance