Files
server/users/schema.py
T

128 lines
2.2 KiB
Python

# schemas.py
from datetime import datetime
from typing import List, Optional
from ninja import Schema, ModelSchema
from users.models import User
# ========== 用户 Schema ==========
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[int] = None
# roles: List[int] = []
is_active: bool
is_staff: bool
is_superuser: bool
last_login: Optional[datetime] = None
date_joined: datetime
class UserCreate(Schema):
username: str
password: str
cname: Optional[str] = None
phone: Optional[str] = None
email: Optional[str] = None
dept: Optional[int] = None
roles: List[int] = []
is_active: bool = True
class UserUpdate(Schema):
username: Optional[str]
password: Optional[str]
cname: Optional[str]
phone: Optional[str]
email: Optional[str]
dept: Optional[int]
roles: Optional[List[int]]
is_active: Optional[bool]
# ========== 菜单 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