82 lines
1.7 KiB
Python
82 lines
1.7 KiB
Python
import pydantic
|
||
|
||
from typing import Optional
|
||
from enum import Enum
|
||
from pydantic import BaseModel
|
||
|
||
EMailRegex = pydantic.constr(regex="^[a-zA-Z0-9_-]+@fecr.com.cn$")
|
||
PasswdRegex = pydantic.constr(regex="^(?![A-Za-z0-9]+$)(?![a-z0-9\\W]+$)(?![A-Za-z\\W]+$)(?![A-Z0-9\\W]+$)^.{8,}$")
|
||
|
||
|
||
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: str
|
||
|
||
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[str]
|
||
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
|