独角鲸同步合作方公司数据项目
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
3.8 KiB

10 months ago
import uuid
from rest_framework import serializers
from .role_serializer import RoleListSerializer
from ..models import UserProfile, Company
import re
class UserListSerializer(serializers.ModelSerializer):
"""
用户列表的序列化
"""
roles = serializers.SerializerMethodField()
company = serializers.SerializerMethodField()
parent_user = serializers.SerializerMethodField()
def get_roles(self, obj):
return obj.roles.values()
def get_company(self, obj):
return obj.company.values()
def get_parent_user(self, obj):
if obj.parent_id:
parent = UserProfile.objects.filter(id=obj.parent_id).values()
else:
parent = None
return parent
class Meta:
model = UserProfile
fields = ["id", "username", "name", "mobile", "email", "image", "area_name",
"is_active", "roles", "is_superuser", 'companyMid', 'company', 'label', 'is_sub', 'parent_user']
depth = 1
class UserModifySerializer(serializers.ModelSerializer):
"""
用户编辑的序列化
"""
mobile = serializers.CharField(max_length=11)
username = serializers.CharField(required=True, allow_blank=False)
class Meta:
model = UserProfile
fields = ["id", "username", "name", "mobile", "email", "image",
"is_active", "roles", "is_superuser", 'label', 'company']
def validate_username(self, value):
return value
def validate_mobile(self, mobile):
REGEX_MOBILE = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$"
if not re.match(REGEX_MOBILE, mobile):
raise serializers.ValidationError("手机号码不合法")
user = UserProfile.objects.filter(mobile=mobile).first()
if user:
user_id = self.context['view'].kwargs.get("pk", "0")
# print(user_id, user.id)
if int(user_id) == user.id:
return mobile
else:
raise serializers.ValidationError("手机号 "+mobile+" 已经被注册")
return mobile
class UserCreateSerializer(serializers.ModelSerializer):
"""
创建用户序列化
"""
username = serializers.CharField(required=True, allow_blank=False)
mobile = serializers.CharField(max_length=11)
class Meta:
model = UserProfile
fields = ["id", "MainId", "username", "name", "mobile", "email", "is_active", "area_name", "roles",
"password", "is_superuser", "companyMid", "company", 'label']
def validate_username(self, username):
if UserProfile.objects.filter(username=username):
raise serializers.ValidationError("用户名 "+username+" 已存在")
return username
def validate_mobile(self, mobile):
REGEX_MOBILE = "^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$"
if not re.match(REGEX_MOBILE, mobile):
raise serializers.ValidationError("手机号码不合法")
if UserProfile.objects.filter(mobile=mobile):
raise serializers.ValidationError("手机号 "+mobile+" 已经被注册")
return mobile
def perform_create(self, serializer):
usermid = uuid.uuid4()
serializer.save(MainId=usermid)
class UserInfoListSerializer(serializers.ModelSerializer):
"""
公共users
"""
class Meta:
model = UserProfile
fields = ("id", "name", "mobile", "email")
class CompanySerializer(serializers.ModelSerializer):
"""
公司序列化
"""
class Meta:
model = Company
fields = "__all__"
class CompanyRoleSerializer(serializers.ModelSerializer):
"""
公司角色序列化
"""
roles = RoleListSerializer(many=True)
class Meta:
model = Company
fields = "__all__"