examtest/test_server/rbac/serializers/user_serializer.py

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')