serializers.py 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. # coding=utf-8
  2. from django.contrib.auth import get_user_model
  3. from rest_framework import serializers
  4. from utils.exceptions import CustomError
  5. from apps.log.models import BizLog
  6. from apps.vehicle.models import Vehicle
  7. from apps.xgjsms.models import XGJVCode
  8. User = get_user_model()
  9. class VehicleSerializer(serializers.ModelSerializer):
  10. class Meta:
  11. model = Vehicle
  12. fields = '__all__'
  13. def validate(self, attrs):
  14. attrs['user'] = self.context['request'].user
  15. if 'tel' in attrs:
  16. if attrs['user'].tel != attrs['tel']:
  17. vcode = self.context['request'].data.get('vcode')
  18. if not vcode:
  19. raise CustomError(u'验证码不能为空!')
  20. XGJVCode.verify(attrs['tel'], vcode)
  21. return attrs
  22. def create(self, validated_data):
  23. vehicle = Vehicle.objects.filter(user=validated_data['user']).count()
  24. if vehicle:
  25. raise CustomError(u'您已有绑定设备!')
  26. instance = super(VehicleSerializer, self).create(validated_data)
  27. return instance
  28. def update(self, instance, validated_data):
  29. if instance.user != validated_data['user']:
  30. raise CustomError(u'禁止操作他人设备!')
  31. instance = super(VehicleSerializer, self).update(instance, validated_data)
  32. return instance