user-wsc/User/schemas.py

82 lines
1.8 KiB
Python
Raw Normal View History

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