2022-10-20 16:29:54 +08:00
|
|
|
|
import pydantic
|
|
|
|
|
|
|
|
|
|
from typing import Union, Optional
|
|
|
|
|
from enum import Enum
|
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
|
|
|
|
EMailRegex = pydantic.constr(regex="^[a-zA-Z0-9_-]+@fecr.com.cn$")
|
2022-10-24 10:39:19 +08:00
|
|
|
|
PasswdRegex = pydantic.constr(regex="^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8,}$")
|
2022-10-20 16:29:54 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class InfoBase(BaseModel):
|
|
|
|
|
|
|
|
|
|
class InfoEnum(Enum):
|
|
|
|
|
enum1 = "Success"
|
|
|
|
|
enum2 = "Failed"
|
|
|
|
|
|
|
|
|
|
info: InfoEnum
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class DepartEnum(Enum):
|
|
|
|
|
enum1 = "数字化部"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class RoleEnum(Enum):
|
|
|
|
|
enum1 = "guest"
|
|
|
|
|
enum2 = "user"
|
|
|
|
|
enum3 = "admin"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserBase(BaseModel):
|
|
|
|
|
|
|
|
|
|
email: EMailRegex = "xxxx@fecr.com.cn"
|
|
|
|
|
name: str = "用户"
|
|
|
|
|
role: RoleEnum = "guest"
|
|
|
|
|
depart: Union[DepartEnum, None] = None
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
use_enum_values = True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserCreate(UserBase):
|
|
|
|
|
passwd: PasswdRegex = "8-16字符长度,至少1个大写字母、1个小写字母、1个数字"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserResetPwd(BaseModel):
|
|
|
|
|
passwd: PasswdRegex = "8-16字符长度,至少1个大写字母、1个小写字母、1个数字"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserEdit(BaseModel):
|
|
|
|
|
email: Optional[EMailRegex] = "xxxx@fecr.com.cn"
|
|
|
|
|
name: Optional[str] = "用户"
|
|
|
|
|
role: Optional[RoleEnum] = "guest"
|
|
|
|
|
depart: Optional[Union[DepartEnum, None]]
|
|
|
|
|
is_active: Optional[bool]
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
use_enum_values = True
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserLogin(BaseModel):
|
|
|
|
|
email: EMailRegex = "xxxx@fecr.com.cn"
|
|
|
|
|
passwd: PasswdRegex = "8-16字符长度,至少1个大写字母、1个小写字母、1个数字"
|
|
|
|
|
# verify: str
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class UserSearch(BaseModel):
|
|
|
|
|
id: Optional[int] = None
|
|
|
|
|
email: Optional[str] = None
|
|
|
|
|
name: Optional[str] = None
|
|
|
|
|
role: Optional[str] = None
|
|
|
|
|
depart: Optional[str] = None
|
|
|
|
|
is_active: Optional[bool] = None
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class User(UserBase):
|
|
|
|
|
|
|
|
|
|
id: int
|
|
|
|
|
is_active: bool
|
|
|
|
|
|
|
|
|
|
class Config:
|
|
|
|
|
orm_mode = True
|