54 lines
1.7 KiB
Python
54 lines
1.7 KiB
Python
"""
|
|
管理员模块序列化器
|
|
"""
|
|
from rest_framework import serializers
|
|
from .models import AdminUser
|
|
|
|
|
|
class AdminUserSerializer(serializers.ModelSerializer):
|
|
"""管理员用户序列化器"""
|
|
|
|
role_display = serializers.CharField(source='get_role_display', read_only=True)
|
|
|
|
class Meta:
|
|
model = AdminUser
|
|
fields = ['id', 'username', 'name', 'email', 'phone', 'role', 'role_display',
|
|
'is_active', 'last_login_ip', 'created_at']
|
|
read_only_fields = ['id', 'last_login_ip', 'created_at']
|
|
|
|
|
|
class AdminLoginSerializer(serializers.Serializer):
|
|
"""管理员登录序列化器"""
|
|
|
|
username = serializers.CharField(max_length=50, help_text='用户名')
|
|
password = serializers.CharField(max_length=128, write_only=True, help_text='密码')
|
|
|
|
|
|
class AdminChangePasswordSerializer(serializers.Serializer):
|
|
"""管理员修改密码序列化器"""
|
|
|
|
old_password = serializers.CharField(max_length=128, write_only=True)
|
|
new_password = serializers.CharField(max_length=128, write_only=True)
|
|
|
|
def validate_new_password(self, value):
|
|
if len(value) < 6:
|
|
raise serializers.ValidationError('密码长度不能少于6位')
|
|
return value
|
|
|
|
|
|
class CreateAdminUserSerializer(serializers.ModelSerializer):
|
|
"""创建管理员序列化器"""
|
|
|
|
password = serializers.CharField(max_length=128, write_only=True)
|
|
|
|
class Meta:
|
|
model = AdminUser
|
|
fields = ['username', 'password', 'name', 'email', 'phone', 'role']
|
|
|
|
def create(self, validated_data):
|
|
password = validated_data.pop('password')
|
|
admin = AdminUser(**validated_data)
|
|
admin.set_password(password)
|
|
admin.save()
|
|
return admin
|