serializers.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. # coding=utf-8
  2. from rest_framework import serializers
  3. from utils.exceptions import CustomError
  4. from apps.account.models import User
  5. from apps.tenant.employee.models import Employee
  6. class UserSerializer(serializers.ModelSerializer):
  7. type = serializers.IntegerField(read_only=True)
  8. password = serializers.CharField(write_only=True, allow_blank=True)
  9. active_text = serializers.SerializerMethodField()
  10. def get_active_text(self, obj):
  11. return obj.is_active and u'是' or u'否'
  12. class Meta:
  13. model = User
  14. fields = '__all__'
  15. def create(self, validated_data):
  16. validated_data['type'] = User.SUPER
  17. if validated_data['password'].strip() == '':
  18. raise CustomError(u'密码不能为空!')
  19. instance = super(UserSerializer, self).create(validated_data)
  20. instance.set_password(validated_data['password'])
  21. instance.save()
  22. Employee.getOrRegister(user=instance)
  23. return instance
  24. def update(self, instance, validated_data):
  25. instance.update_item(validated_data)
  26. # if not 'password' in validated_data or not validated_data['password']:
  27. # validated_data['password'] = instance.password
  28. # instance = super(UserSerializer, self).update(instance, validated_data)
  29. # else:
  30. # instance = super(UserSerializer, self).update(instance, validated_data)
  31. # instance.set_password(validated_data['password'])
  32. # instance.save()
  33. return instance