Files

139 lines
2.4 KiB
Python

# schemas.py
from datetime import datetime
from typing import List, Optional
from ninja import Schema
# ========== 用户 Schema ==========
class UserRoleOut(Schema):
id: int
name: str
class UserDeptOut(Schema):
id: int
name: str
class UserOut(Schema):
id: int
username: str
cname: Optional[str] = None
phone: Optional[str] = None
email: Optional[str] = None
avatar: Optional[str] = None
dept: Optional[UserDeptOut] = None
roles: List[UserRoleOut] = []
is_active: bool
is_staff: bool
is_superuser: bool
last_login: Optional[datetime] = None
date_joined: datetime
class UserCreate(Schema):
username: str
password: Optional[str] = None
cname: Optional[str] = None
phone: Optional[str] = None
email: Optional[str] = None
dept: Optional[int] = None
roles: List[int] = []
is_active: bool = True
class UserResetPassword(Schema):
user_id: int
new_password: str
class UserUpdate(Schema):
username: Optional[str] = None
password: Optional[str] = None
cname: Optional[str] = None
phone: Optional[str] = None
email: Optional[str] = None
dept: Optional[int] = None
roles: Optional[List[int]] = None
is_active: Optional[bool] = None
# ========== 菜单 Schema ==========
class MenuBase(Schema):
name: str
code: str
path: Optional[str] = None
component: Optional[str] = None
icon: Optional[str] = None
parent_id: Optional[int] = None
menu_type: int = 1
order_num: int = 0
permission_code: Optional[str] = None
status: bool = True
class MenuCreate(MenuBase):
pass
class MenuUpdate(MenuBase):
pass
class MenuOut(MenuBase):
id: int
created_at: datetime
# ========== 角色 Schema ==========
class RoleBase(Schema):
name: str
code: str
description: Optional[str] = None
status: bool = True
menus: List[MenuOut]
class RoleCreate(RoleBase):
pass
class RoleUpdate(RoleBase):
pass
class RoleOut(RoleBase):
id: int
created_at: datetime
# ========== 关联 Schema ==========
class RoleMenuAssign(Schema):
menu_ids: List[int]
class UserRoleAssign(Schema):
role_ids: List[int]
class DepartmentBase(Schema):
name: str
parent_id: Optional[int] = None
order: int = 0
class DepartmentCreate(DepartmentBase):
pass
class DepartmentUpdate(DepartmentBase):
pass
class DepartmentOut(DepartmentBase):
id: int