serializers.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. # coding=utf-8
  2. from apps.exceptions import CustomError
  3. from rest_framework import serializers
  4. from apps.activity.models import Order
  5. from apps.customer.models import Customer
  6. from util.format import Formater
  7. class ActivityOrderSerializer(serializers.ModelSerializer):
  8. number = serializers.SerializerMethodField()
  9. create_time = serializers.DateTimeField(format='%m-%d %H:%M', read_only=True)
  10. class Meta:
  11. model = Order
  12. fields = ('number', 'create_time', )
  13. def get_number(self, obj):
  14. if obj.number:
  15. l = len(obj.number)
  16. if l < 4:
  17. return ''
  18. return obj.number[:2] + '***' + obj.number[l - 2:l]
  19. return ''
  20. class OrderSerializer(serializers.ModelSerializer):
  21. activity_name = serializers.CharField(source='activity.title', read_only=True)
  22. class Meta:
  23. model = Order
  24. fields = '__all__'
  25. def validate(self, attrs):
  26. attrs['member'] = self.context['request'].customer
  27. if 'activity' in attrs and attrs['activity']:
  28. attrs['activity'].checkStatus()
  29. required_signs = []
  30. if attrs['activity'].required_signs:
  31. required_signs = attrs['activity'].required_signs.split(',')
  32. for item in required_signs:
  33. if item == u'姓名':
  34. if ('name' not in attrs) or (not attrs['name']):
  35. raise CustomError(u'请输入姓名')
  36. if item == u'车牌号':
  37. if ('number' not in attrs) or (not attrs['number']):
  38. raise CustomError(u'请输入车牌号')
  39. if item == u'车型':
  40. if ('model' not in attrs) or (not attrs['model']):
  41. raise CustomError(u'请输入车型')
  42. if 'customer_id' in attrs and attrs['customer_id']:
  43. recommend_member = Customer.objects.filter(id=attrs['customer_id']).first(0)
  44. if recommend_member:
  45. attrs['recommend_member'] = recommend_member
  46. return attrs
  47. def create(self, validated_data):
  48. validated_data['branch'] = validated_data['activity'].branch
  49. validated_data['amount'] = Formater.formatPrice(validated_data['activity'].amount)
  50. validated_data['rebate'] = Formater.formatPrice(validated_data['activity'].rebate)
  51. instance = super(OrderSerializer, self).create(validated_data)
  52. return instance