mirror of
https://github.com/fastapiadmin/FastapiAdmin.git
synced 2026-09-23 05:10:57 +00:00
feat(model): 添加status字段表示启用状态
- 在myapp模块的ApplicationModel中新增status字段,标识应用是否启用 - 在demo模块的DemoModel中新增status字段,标识示例条目是否启用 - 修改代码生成模块相关模型,替换BaseMixin为CreatorMixin - 删除代码生成模块中Python模板相关文件与Vue前端代码模板,优化代码结构和清理无用模板文件
This commit is contained in:
@@ -15,7 +15,7 @@ from .service import VersionService
|
||||
from .schema import VersionCreateSchema, VersionUpdateSchema
|
||||
|
||||
|
||||
VersionRouter = APIRouter(route_class=OperationLogRoute, prefix="/versions", tags=["版本管理"])
|
||||
VersionRouter = APIRouter(route_class=OperationLogRoute, prefix="/version", tags=["版本管理"])
|
||||
|
||||
|
||||
@VersionRouter.get("/detail/{id}", summary="获取版本详情", description="获取版本详情")
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
|
||||
from typing import Dict, List, Optional, Sequence
|
||||
from datetime import datetime
|
||||
|
||||
from app.core.base_crud import CRUDBase
|
||||
from app.api.v1.module_system.auth.schema import AuthSchema
|
||||
@@ -39,7 +40,16 @@ class VersionCRUD(CRUDBase[VersionModel, VersionCreateSchema, VersionUpdateSchem
|
||||
:param data: 版本创建数据
|
||||
:return: 创建的版本
|
||||
"""
|
||||
return await self.create(data=data)
|
||||
# 处理 released_at 字段,确保字符串转换为 datetime 对象
|
||||
data_dict = data.model_dump()
|
||||
if data_dict.get('released_at') and isinstance(data_dict['released_at'], str):
|
||||
try:
|
||||
data_dict['released_at'] = datetime.strptime(data_dict['released_at'], '%Y-%m-%d %H:%M:%S')
|
||||
except ValueError:
|
||||
# 如果格式不正确,让数据库层处理错误
|
||||
pass
|
||||
|
||||
return await self.create(data=data_dict)
|
||||
|
||||
async def update_crud(self, id: int, data: VersionUpdateSchema) -> Optional[VersionModel]:
|
||||
"""更新版本
|
||||
@@ -48,7 +58,16 @@ class VersionCRUD(CRUDBase[VersionModel, VersionCreateSchema, VersionUpdateSchem
|
||||
:param data: 版本更新数据
|
||||
:return: 更新的版本
|
||||
"""
|
||||
return await self.update(id=id, data=data)
|
||||
# 处理 released_at 字段,确保字符串转换为 datetime 对象
|
||||
data_dict = data.model_dump(exclude_unset=True, exclude={"id"})
|
||||
if data_dict.get('released_at') and isinstance(data_dict['released_at'], str):
|
||||
try:
|
||||
data_dict['released_at'] = datetime.strptime(data_dict['released_at'], '%Y-%m-%d %H:%M:%S')
|
||||
except ValueError:
|
||||
# 如果格式不正确,让数据库层处理错误
|
||||
pass
|
||||
|
||||
return await self.update(id=id, data=data_dict)
|
||||
|
||||
async def delete_crud(self, ids: List[int]) -> None:
|
||||
"""批量删除版本
|
||||
@@ -65,15 +84,13 @@ class VersionCRUD(CRUDBase[VersionModel, VersionCreateSchema, VersionUpdateSchem
|
||||
"""
|
||||
return await self.get(version_number=version_number)
|
||||
|
||||
async def get_by_status_crud(self, status: str, search: Optional[Dict] = None, order_by: Optional[List[Dict[str, str]]] = None) -> Sequence[VersionModel]:
|
||||
async def get_by_status_crud(self, search: Optional[Dict] = None, order_by: Optional[List[Dict[str, str]]] = None) -> Sequence[VersionModel]:
|
||||
"""根据状态获取版本列表
|
||||
|
||||
:param status: 版本状态
|
||||
:param search: 搜索条件
|
||||
:param order_by: 排序字段
|
||||
:return: 版本列表
|
||||
"""
|
||||
if search is None:
|
||||
search = {}
|
||||
search['version_status'] = status
|
||||
return await self.list(search=search, order_by=order_by or [])
|
||||
@@ -19,6 +19,6 @@ class VersionModel(CreatorMixin):
|
||||
version_number: Mapped[str] = mapped_column(String(50), nullable=False, comment='版本号')
|
||||
title: Mapped[str] = mapped_column(String(255), nullable=False, comment='版本标题')
|
||||
release_notes: Mapped[Optional[str]] = mapped_column(Text, comment='发布说明')
|
||||
version_status: Mapped[str] = mapped_column(String(50), default='draft', comment='版本状态(draft, released, archived)')
|
||||
status: Mapped[str] = mapped_column(String(50), default='draft', comment='版本状态(draft: 草稿, released: 已发布, archived: 已归档)')
|
||||
project: Mapped[Optional[str]] = mapped_column(String(100), comment='所属项目')
|
||||
released_at: Mapped[Optional[datetime]] = mapped_column(DateTime, comment='发布时间')
|
||||
@@ -13,8 +13,7 @@ class VersionQueryParams:
|
||||
def __init__(
|
||||
self,
|
||||
title: Optional[str] = Query(None, description="版本标题"),
|
||||
status: Optional[bool] = Query(None, description="状态"),
|
||||
version_status: Optional[str] = Query(None, description="版本状态"),
|
||||
status: Optional[str] = Query(None, description="版本状态"),
|
||||
creator: Optional[int] = Query(None, description="创建人"),
|
||||
start_time: Optional[DateTimeStr] = Query(None, description="开始时间", example="2023-01-01 00:00:00"),
|
||||
end_time: Optional[DateTimeStr] = Query(None, description="结束时间", example="2023-12-31 23:59:59"),
|
||||
@@ -26,9 +25,7 @@ class VersionQueryParams:
|
||||
|
||||
# 精确查询字段
|
||||
self.creator_id = creator
|
||||
|
||||
self.status = status
|
||||
self.version_status = version_status # 使用 version_status 而不是 status
|
||||
|
||||
# 时间范围查询
|
||||
if start_time and end_time:
|
||||
|
||||
@@ -5,6 +5,7 @@ from pydantic import BaseModel, ConfigDict, Field
|
||||
from datetime import datetime
|
||||
|
||||
from app.core.base_schema import BaseSchema
|
||||
from app.core.validator import DateTimeStr
|
||||
|
||||
|
||||
class VersionCreateSchema(BaseModel):
|
||||
@@ -13,10 +14,9 @@ class VersionCreateSchema(BaseModel):
|
||||
title: str = Field(..., max_length=255, description='版本标题')
|
||||
release_notes: Optional[str] = Field(default=None, description='发布说明')
|
||||
description: Optional[str] = Field(default=None, description='工单描述')
|
||||
status: Optional[bool] = Field(default=True, description='1、启动 2、停止')
|
||||
version_status: Optional[str] = Field(default='draft', description='版本状态(draft, released, archived)')
|
||||
status: Optional[str] = Field(default='draft', description='版本状态(draft: 草稿, released: 已发布, archived: 已归档)')
|
||||
project: Optional[str] = Field(default=None, max_length=100, description='所属项目')
|
||||
released_at: Optional[datetime] = Field(default=None, description='发布时间')
|
||||
released_at: Optional[DateTimeStr] = Field(default=None, description='发布时间')
|
||||
|
||||
|
||||
class VersionUpdateSchema(VersionCreateSchema):
|
||||
|
||||
@@ -70,7 +70,7 @@ class VersionService:
|
||||
await VersionCRUD(auth).delete_crud(ids=ids)
|
||||
|
||||
@classmethod
|
||||
async def get_version_by_status_service(cls, auth: AuthSchema, status: str, search: Optional[VersionQueryParams] = None, order_by: Optional[Union[str, List[Dict[str, str]]]] = None) -> List[Dict]:
|
||||
async def get_version_by_status_service(cls, auth: AuthSchema, search: Optional[VersionQueryParams] = None, order_by: Optional[Union[str, List[Dict[str, str]]]] = None) -> List[Dict]:
|
||||
"""根据状态获取版本列表"""
|
||||
# 处理排序参数
|
||||
processed_order_by = None
|
||||
@@ -81,7 +81,6 @@ class VersionService:
|
||||
processed_order_by = order_by
|
||||
|
||||
obj_list = await VersionCRUD(auth).get_by_status_crud(
|
||||
status=status,
|
||||
search=search.__dict__ if search else None,
|
||||
order_by=processed_order_by
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user