serializers.py 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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. show_amount = serializers.SerializerMethodField()
  23. class Meta:
  24. model = Order
  25. fields = '__all__'
  26. def get_show_amount(self, obj):
  27. return Formater.formatPriceShow(obj.amount)
  28. def validate(self, attrs):
  29. attrs['member'] = self.context['request'].customer
  30. if 'activity_detail' in attrs and attrs['activity_detail']:
  31. attrs['activity_detail'].checkStatus()
  32. required_signs = []
  33. if attrs['activity_detail'].main.required_signs:
  34. required_signs = attrs['activity_detail'].main.required_signs.split(',')
  35. for item in required_signs:
  36. if item == u'姓名':
  37. if ('name' not in attrs) or (not attrs['name']):
  38. raise CustomError(u'请输入姓名')
  39. if item == u'车牌号':
  40. if ('number' not in attrs) or (not attrs['number']):
  41. raise CustomError(u'请输入车牌号')
  42. if item == u'车型':
  43. if ('model' not in attrs) or (not attrs['model']):
  44. raise CustomError(u'请输入车型')
  45. if item == u'手机号码':
  46. if ('tel' not in attrs) or (not attrs['tel']):
  47. raise CustomError(u'请输入手机号码')
  48. return attrs
  49. def create(self, validated_data):
  50. validated_data['branch'] = validated_data['activity_detail'].main.branch
  51. validated_data['amount'] = Formater.formatPrice(validated_data['activity_detail'].amount)
  52. validated_data['rebate'] = Formater.formatPrice(validated_data['activity_detail'].rebate)
  53. instance = super(OrderSerializer, self).create(validated_data)
  54. return instance