完善审计日志展示与导出权限
This commit is contained in:
@@ -1,3 +1,5 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import uuid
|
||||
from typing import Sequence
|
||||
|
||||
@@ -65,8 +67,3 @@ async def list_logs(
|
||||
async def get_log(db: AsyncSession, log_id: uuid.UUID) -> AuditLog | None:
|
||||
result = await db.execute(select(AuditLog).where(AuditLog.id == log_id))
|
||||
return result.scalar_one_or_none()
|
||||
|
||||
|
||||
async def delete_log(db: AsyncSession, log: AuditLog) -> None:
|
||||
await db.delete(log)
|
||||
await db.commit()
|
||||
|
||||
@@ -121,11 +121,10 @@ async def delete(db: AsyncSession, study_id: uuid.UUID) -> None:
|
||||
from app.models.study_monitoring_strategy import StudyMonitoringStrategy
|
||||
from app.models.study_center_confirm import StudyCenterConfirm
|
||||
|
||||
# 按依赖关系顺序删除关联数据
|
||||
# 1. 删除审计日志
|
||||
await db.execute(sa_delete(AuditLog).where(AuditLog.study_id == study_id))
|
||||
# 按依赖关系顺序删除关联数据。审计日志必须保留,只解除项目外键,避免硬删除项目时破坏审计链。
|
||||
await db.execute(sa_update(AuditLog).where(AuditLog.study_id == study_id).values(study_id=None))
|
||||
|
||||
# 2. 删除FAQ相关(可能有依赖关系)
|
||||
# 1. 删除FAQ相关(可能有依赖关系)
|
||||
await db.execute(sa_delete(FaqReply).where(FaqReply.study_id == study_id))
|
||||
await db.execute(sa_delete(FaqItem).where(FaqItem.study_id == study_id))
|
||||
await db.execute(sa_delete(FaqCategory).where(FaqCategory.study_id == study_id))
|
||||
|
||||
Reference in New Issue
Block a user