Files
2026-04-22 17:07:33 +08:00

62 lines
1.2 KiB
Python

from typing import Optional, List
from pydantic import BaseModel, EmailStr
from datetime import datetime
class RoleOut(BaseModel):
id: int
name: str
code: str
description: Optional[str] = None
class Config:
from_attributes = True
class DeptOut(BaseModel):
id: int
name: str
parent_id: Optional[int] = None
sort_order: int = 0
class Config:
from_attributes = True
class DeptTree(DeptOut):
children: List["DeptTree"] = []
class UserBase(BaseModel):
username: str
email: Optional[str] = None
real_name: Optional[str] = None
phone: Optional[str] = None
dept_id: Optional[int] = None
is_active: bool = True
class UserCreate(UserBase):
password: str
role_ids: List[int] = []
class UserUpdate(BaseModel):
email: Optional[str] = None
real_name: Optional[str] = None
phone: Optional[str] = None
dept_id: Optional[int] = None
is_active: Optional[bool] = None
role_ids: Optional[List[int]] = None
class UserOut(UserBase):
id: int
is_superuser: bool
created_at: datetime
dept: Optional[DeptOut] = None
roles: List[RoleOut] = []
class Config:
from_attributes = True