项目初次提交
This commit is contained in:
4
apps/vadmin/auth/schemas/__init__.py
Normal file
4
apps/vadmin/auth/schemas/__init__.py
Normal file
@ -0,0 +1,4 @@
|
||||
from .user import UserOut, UserUpdate, User, UserIn, UserSimpleOut, ResetPwd, UserUpdateBaseInfo, UserPasswordOut
|
||||
from .role import Role, RoleOut, RoleIn, RoleOptionsOut, RoleSimpleOut
|
||||
from .menu import Menu, MenuSimpleOut, RouterOut, Meta, MenuTreeListOut
|
||||
from .dept import Dept, DeptSimpleOut, DeptTreeListOut
|
39
apps/vadmin/auth/schemas/dept.py
Normal file
39
apps/vadmin/auth/schemas/dept.py
Normal file
@ -0,0 +1,39 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# @version : 1.0
|
||||
# @Create Time : 2023/10/25 12:19
|
||||
# @File : dept.py
|
||||
# @IDE : PyCharm
|
||||
# @desc : pydantic 模型,用于数据库序列化操作
|
||||
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from core.data_types import DatetimeStr
|
||||
|
||||
|
||||
class Dept(BaseModel):
|
||||
name: str
|
||||
dept_key: str
|
||||
disabled: bool = False
|
||||
order: int | None = None
|
||||
desc: str | None = None
|
||||
owner: str | None = None
|
||||
phone: str | None = None
|
||||
email: str | None = None
|
||||
|
||||
parent_id: int | None = None
|
||||
|
||||
|
||||
class DeptSimpleOut(Dept):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: int
|
||||
create_datetime: DatetimeStr
|
||||
update_datetime: DatetimeStr
|
||||
|
||||
|
||||
class DeptTreeListOut(DeptSimpleOut):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
children: list[dict] = []
|
||||
|
66
apps/vadmin/auth/schemas/menu.py
Normal file
66
apps/vadmin/auth/schemas/menu.py
Normal file
@ -0,0 +1,66 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# @version : 1.0
|
||||
# @Create Time : 2021/10/18 22:19
|
||||
# @File : role.py
|
||||
# @IDE : PyCharm
|
||||
# @desc : pydantic 模型,用于数据库序列化操作
|
||||
|
||||
|
||||
from pydantic import BaseModel, ConfigDict
|
||||
from core.data_types import DatetimeStr
|
||||
|
||||
|
||||
class Menu(BaseModel):
|
||||
title: str
|
||||
icon: str | None = None
|
||||
component: str | None = None
|
||||
redirect: str | None = None
|
||||
path: str | None = None
|
||||
disabled: bool = False
|
||||
hidden: bool = False
|
||||
order: int | None = None
|
||||
perms: str | None = None
|
||||
parent_id: int | None = None
|
||||
menu_type: str
|
||||
alwaysShow: bool | None = True
|
||||
noCache: bool | None = False
|
||||
|
||||
|
||||
class MenuSimpleOut(Menu):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: int
|
||||
create_datetime: DatetimeStr
|
||||
update_datetime: DatetimeStr
|
||||
|
||||
|
||||
class Meta(BaseModel):
|
||||
title: str
|
||||
icon: str | None = None
|
||||
hidden: bool = False
|
||||
noCache: bool | None = False
|
||||
breadcrumb: bool | None = True
|
||||
affix: bool | None = False
|
||||
noTagsView: bool | None = False
|
||||
canTo: bool | None = False
|
||||
alwaysShow: bool | None = True
|
||||
|
||||
|
||||
# 路由展示
|
||||
class RouterOut(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
name: str | None = None
|
||||
component: str | None = None
|
||||
path: str
|
||||
redirect: str | None = None
|
||||
meta: Meta | None = None
|
||||
order: int | None = None
|
||||
children: list[dict] = []
|
||||
|
||||
|
||||
class MenuTreeListOut(MenuSimpleOut):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
children: list[dict] = []
|
52
apps/vadmin/auth/schemas/role.py
Normal file
52
apps/vadmin/auth/schemas/role.py
Normal file
@ -0,0 +1,52 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# @version : 1.0
|
||||
# @Create Time : 2021/10/18 22:19
|
||||
# @File : role.py
|
||||
# @IDE : PyCharm
|
||||
# @desc : pydantic 模型,用于数据库序列化操作
|
||||
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, Field
|
||||
from core.data_types import DatetimeStr
|
||||
from .menu import MenuSimpleOut
|
||||
from .dept import DeptSimpleOut
|
||||
|
||||
|
||||
class Role(BaseModel):
|
||||
name: str
|
||||
disabled: bool = False
|
||||
order: int | None = None
|
||||
desc: str | None = None
|
||||
data_range: int = 4
|
||||
role_key: str
|
||||
is_admin: bool = False
|
||||
|
||||
|
||||
class RoleSimpleOut(Role):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: int
|
||||
create_datetime: DatetimeStr
|
||||
update_datetime: DatetimeStr
|
||||
|
||||
|
||||
class RoleOut(RoleSimpleOut):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
menus: list[MenuSimpleOut] = []
|
||||
depts: list[DeptSimpleOut] = []
|
||||
|
||||
|
||||
class RoleIn(Role):
|
||||
menu_ids: list[int] = []
|
||||
dept_ids: list[int] = []
|
||||
|
||||
|
||||
class RoleOptionsOut(BaseModel):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
label: str = Field(alias='name')
|
||||
value: int = Field(alias='id')
|
||||
disabled: bool
|
||||
|
98
apps/vadmin/auth/schemas/user.py
Normal file
98
apps/vadmin/auth/schemas/user.py
Normal file
@ -0,0 +1,98 @@
|
||||
#!/usr/bin/python
|
||||
# -*- coding: utf-8 -*-
|
||||
# @version : 1.0
|
||||
# @Create Time : 2021/10/18 22:19
|
||||
# @File : user.py
|
||||
# @IDE : PyCharm
|
||||
# @desc : pydantic 模型,用于数据库序列化操作
|
||||
|
||||
|
||||
from pydantic import BaseModel, ConfigDict, field_validator
|
||||
from pydantic_core.core_schema import FieldValidationInfo
|
||||
from core.data_types import Telephone, DatetimeStr, Email
|
||||
from .role import RoleSimpleOut
|
||||
from .dept import DeptSimpleOut
|
||||
|
||||
|
||||
class User(BaseModel):
|
||||
name: str
|
||||
telephone: Telephone
|
||||
email: Email | None = None
|
||||
nickname: str | None = None
|
||||
avatar: str | None = None
|
||||
is_active: bool | None = True
|
||||
is_staff: bool | None = True
|
||||
gender: str | None = "0"
|
||||
is_wx_server_openid: bool | None = False
|
||||
|
||||
|
||||
class UserIn(User):
|
||||
"""
|
||||
创建用户
|
||||
"""
|
||||
role_ids: list[int] = []
|
||||
dept_ids: list[int] = []
|
||||
password: str | None = ""
|
||||
|
||||
|
||||
class UserUpdateBaseInfo(BaseModel):
|
||||
"""
|
||||
更新用户基本信息
|
||||
"""
|
||||
name: str
|
||||
telephone: Telephone
|
||||
email: Email | None = None
|
||||
nickname: str | None = None
|
||||
gender: str | None = "0"
|
||||
|
||||
|
||||
class UserUpdate(User):
|
||||
"""
|
||||
更新用户详细信息
|
||||
"""
|
||||
name: str | None = None
|
||||
telephone: Telephone
|
||||
email: Email | None = None
|
||||
nickname: str | None = None
|
||||
avatar: str | None = None
|
||||
is_active: bool | None = True
|
||||
is_staff: bool | None = False
|
||||
gender: str | None = "0"
|
||||
role_ids: list[int] = []
|
||||
dept_ids: list[int] = []
|
||||
|
||||
|
||||
class UserSimpleOut(User):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
id: int
|
||||
update_datetime: DatetimeStr
|
||||
create_datetime: DatetimeStr
|
||||
|
||||
is_reset_password: bool | None = None
|
||||
last_login: DatetimeStr | None = None
|
||||
last_ip: str | None = None
|
||||
|
||||
|
||||
class UserPasswordOut(UserSimpleOut):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
password: str
|
||||
|
||||
|
||||
class UserOut(UserSimpleOut):
|
||||
model_config = ConfigDict(from_attributes=True)
|
||||
|
||||
roles: list[RoleSimpleOut] = []
|
||||
depts: list[DeptSimpleOut] = []
|
||||
|
||||
|
||||
class ResetPwd(BaseModel):
|
||||
password: str
|
||||
password_two: str
|
||||
|
||||
@field_validator('password_two')
|
||||
def check_passwords_match(cls, v, info: FieldValidationInfo):
|
||||
if 'password' in info.data and v != info.data['password']:
|
||||
raise ValueError('两次密码不一致!')
|
||||
return v
|
Reference in New Issue
Block a user