85 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Python
		
	
	
	
from rest_framework import serializers
 | 
						|
from ..models import UserProfile
 | 
						|
import re
 | 
						|
 | 
						|
 | 
						|
class UserListSerializer(serializers.ModelSerializer):
 | 
						|
    """
 | 
						|
    用户列表的序列化
 | 
						|
    """
 | 
						|
    # roles = serializers.SerializerMethodField()
 | 
						|
    date_joined = serializers.DateTimeField(format="%Y-%m-%d %H:%M:%S", required=False, read_only=True)
 | 
						|
    department_name = serializers.StringRelatedField(source='department')
 | 
						|
 | 
						|
    # def get_roles(self, obj):
 | 
						|
    #     return obj.roles.values()
 | 
						|
 | 
						|
    class Meta:
 | 
						|
        model = UserProfile
 | 
						|
        fields = ['id', 'username', 'name', 'department', 'position',
 | 
						|
                  'is_active', 'roles', 'date_joined', 'is_superuser','department_name', 'avatar']
 | 
						|
        # depth = 1
 | 
						|
 | 
						|
 | 
						|
class UserModifySerializer(serializers.ModelSerializer):
 | 
						|
    """
 | 
						|
    用户编辑的序列化
 | 
						|
    """
 | 
						|
    mobile = serializers.CharField(max_length=11, read_only=True)
 | 
						|
 | 
						|
    class Meta:
 | 
						|
        model = UserProfile
 | 
						|
        fields = ['id', 'username', 'name', 'mobile', 'email', 'avatar', 'department', 'position', 'superior',
 | 
						|
                  'is_active', 'roles']
 | 
						|
 | 
						|
    def validate_mobile(self, mobile):
 | 
						|
        REGEX_MOBILE = "^1[358]\d{9}$|^147\d{8}$|^176\d{8}$"
 | 
						|
        if not re.match(REGEX_MOBILE, mobile):
 | 
						|
            raise serializers.ValidationError("手机号码不合法")
 | 
						|
        return mobile
 | 
						|
 | 
						|
 | 
						|
class UserCreateSerializer(serializers.ModelSerializer):
 | 
						|
    """
 | 
						|
    创建用户序列化
 | 
						|
    """
 | 
						|
    username = serializers.CharField(required=True)
 | 
						|
    mobile = serializers.CharField(max_length=11, read_only=True)
 | 
						|
 | 
						|
    class Meta:
 | 
						|
        model = UserProfile
 | 
						|
        fields = ['id', 'username', 'name', 'mobile', 'email', 'department', 'position', 'is_active', 'roles',
 | 
						|
                  'password','is_superuser']
 | 
						|
 | 
						|
    def validate_username(self, username):
 | 
						|
        if UserProfile.objects.filter(username=username):
 | 
						|
            raise serializers.ValidationError(username + ' 账号已存在')
 | 
						|
        return username
 | 
						|
 | 
						|
    def validate_mobile(self, mobile):
 | 
						|
        REGEX_MOBILE = "^1[358]\d{9}$|^147\d{8}$|^176\d{8}$"
 | 
						|
        if not re.match(REGEX_MOBILE, mobile):
 | 
						|
            raise serializers.ValidationError("手机号码不合法")
 | 
						|
        if UserProfile.objects.filter(mobile=mobile):
 | 
						|
            raise serializers.ValidationError("手机号已经被注册")
 | 
						|
        return mobile
 | 
						|
    
 | 
						|
    # def create(self, validated_data):
 | 
						|
    #     user = User(**validated_data)
 | 
						|
    #     if validated_data['password']:
 | 
						|
    #         user.set_password(validated_data['password'])
 | 
						|
    #     else:
 | 
						|
    #         user.set_password('password')
 | 
						|
    #     user.save()
 | 
						|
    #     return user
 | 
						|
 | 
						|
 | 
						|
class UserInfoListSerializer(serializers.ModelSerializer):
 | 
						|
    """
 | 
						|
    公共users
 | 
						|
    """
 | 
						|
 | 
						|
    class Meta:
 | 
						|
        model = UserProfile
 | 
						|
        fields = ('id', 'name', 'mobile', 'email', 'position', 'username', 'is_active')
 |