from typing import Optional, List from pydantic import BaseModel, constr from AppUser.Schemas.DepartmentSchema import DepartmentIDRegex from AppUser.Schemas.RoleSchema import RoleIDRegex EMailRegex = constr(regex="^[a-zA-Z0-9_-]+@fecr.com.cn$") PasswdRegex = constr(regex="^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8,}$") class CreateReqBody(BaseModel): email: EMailRegex = "xxxx@fecr.com.cn" name: str role_id: RoleIDRegex = "ROLE01" department_id: DepartmentIDRegex = "D001" class FullUserResBody(BaseModel): id: str email: EMailRegex = "xxxx@fecr.com.cn" name: str = "用户" avatar: str role: str = "guest" department: str is_active: bool class EditReqBody(BaseModel): name: Optional[str] role_id: Optional[RoleIDRegex] department_id: Optional[DepartmentIDRegex] is_active: Optional[bool] def del_null_value(self): _dict = self.dict() for key in list(_dict.keys()): if not _dict.get(key): del _dict[key] return _dict class ResetPwdReqBody(BaseModel): passwd: PasswdRegex = "包含大小写字母和数字,长度8-16位" class LoginReqBody(BaseModel): email: EMailRegex = "xxxx@fecr.com.cn" passwd: PasswdRegex = "包含大小写字母和数字,长度8-16位" verify_code: str class DetailResBody(BaseModel): id: str email: EMailRegex = "xxxx@fecr.com.cn" name: str = "用户" avatar: str role: str = "guest" department: str class SearchReqBody(BaseModel): email: Optional[str] = None name: Optional[str] = None role_id: Optional[RoleIDRegex] = None department_id: Optional[DepartmentIDRegex] = None class SearchResultResBody(BaseModel): result: List[FullUserResBody] total: int