未知(继上次中断)
This commit is contained in:
@@ -6,13 +6,12 @@ from fastapi.responses import FileResponse
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.core.deps import get_current_user, get_db_session
|
||||
from app.crud import document_version as version_crud
|
||||
from app.schemas.acknowledgement import AcknowledgementCreate, AcknowledgementRead
|
||||
from app.schemas.common import PaginatedResponse
|
||||
from app.schemas.distribution import DistributionCreate, DistributionRead
|
||||
from app.schemas.document import DocumentCreate, DocumentDetail, DocumentSummary
|
||||
from app.schemas.document_version import DocumentVersionRead, VersionActionRequest, VersionSubmitRequest
|
||||
from app.schemas.workflow_template import WorkflowTemplateRead
|
||||
from app.schemas.document_version import DocumentVersionRead
|
||||
from app.models.user import UserRole
|
||||
from app.services import document_service
|
||||
from app.utils.pagination import paginate
|
||||
|
||||
@@ -74,6 +73,9 @@ async def delete_document(
|
||||
db: AsyncSession = Depends(get_db_session),
|
||||
current_user=Depends(get_current_user),
|
||||
) -> DocumentSummary:
|
||||
role_value = current_user.role.value if hasattr(current_user.role, "value") else current_user.role
|
||||
if role_value != UserRole.ADMIN.value:
|
||||
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="仅管理员可删除文档")
|
||||
doc = await document_service.delete_document(db, document_id, current_user)
|
||||
return DocumentSummary.model_validate(doc)
|
||||
|
||||
@@ -86,6 +88,7 @@ async def delete_document(
|
||||
async def create_version(
|
||||
document_id: uuid.UUID,
|
||||
version_no: str = Form(...),
|
||||
version_date: str = Form(...),
|
||||
change_summary: Optional[str] = Form(None),
|
||||
parent_version_id: Optional[uuid.UUID] = Form(None),
|
||||
file: UploadFile = File(...),
|
||||
@@ -96,6 +99,7 @@ async def create_version(
|
||||
db,
|
||||
document_id,
|
||||
version_no=version_no,
|
||||
version_date=version_date,
|
||||
change_summary=change_summary,
|
||||
parent_version_id=parent_version_id,
|
||||
file=file,
|
||||
@@ -104,58 +108,6 @@ async def create_version(
|
||||
return DocumentVersionRead.model_validate(version)
|
||||
|
||||
|
||||
@router.post("/versions/{version_id}/submit", response_model=DocumentVersionRead)
|
||||
async def submit_version(
|
||||
version_id: uuid.UUID,
|
||||
payload: VersionSubmitRequest,
|
||||
db: AsyncSession = Depends(get_db_session),
|
||||
current_user=Depends(get_current_user),
|
||||
) -> DocumentVersionRead:
|
||||
await document_service.submit_version(db, version_id, payload.template_id, payload.comment, current_user)
|
||||
version = await version_crud.get(db, version_id)
|
||||
if not version:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="版本不存在")
|
||||
return DocumentVersionRead.model_validate(version)
|
||||
|
||||
|
||||
@router.post("/versions/{version_id}/approve", response_model=DocumentVersionRead)
|
||||
async def approve_version(
|
||||
version_id: uuid.UUID,
|
||||
payload: VersionActionRequest,
|
||||
db: AsyncSession = Depends(get_db_session),
|
||||
current_user=Depends(get_current_user),
|
||||
) -> DocumentVersionRead:
|
||||
await document_service.approve_version(db, version_id, payload.comment, current_user)
|
||||
version = await version_crud.get(db, version_id)
|
||||
if not version:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="版本不存在")
|
||||
return DocumentVersionRead.model_validate(version)
|
||||
|
||||
|
||||
@router.post("/versions/{version_id}/reject", response_model=DocumentVersionRead)
|
||||
async def reject_version(
|
||||
version_id: uuid.UUID,
|
||||
payload: VersionActionRequest,
|
||||
db: AsyncSession = Depends(get_db_session),
|
||||
current_user=Depends(get_current_user),
|
||||
) -> DocumentVersionRead:
|
||||
await document_service.reject_version(db, version_id, payload.comment, current_user)
|
||||
version = await version_crud.get(db, version_id)
|
||||
if not version:
|
||||
raise HTTPException(status_code=status.HTTP_404_NOT_FOUND, detail="版本不存在")
|
||||
return DocumentVersionRead.model_validate(version)
|
||||
|
||||
|
||||
@router.post("/versions/{version_id}/make-effective", response_model=DocumentVersionRead)
|
||||
async def make_version_effective(
|
||||
version_id: uuid.UUID,
|
||||
db: AsyncSession = Depends(get_db_session),
|
||||
current_user=Depends(get_current_user),
|
||||
) -> DocumentVersionRead:
|
||||
version = await document_service.make_version_effective(db, version_id, current_user)
|
||||
return DocumentVersionRead.model_validate(version)
|
||||
|
||||
|
||||
@router.get("/versions/{version_id}/download", response_class=FileResponse)
|
||||
async def download_version(
|
||||
version_id: uuid.UUID,
|
||||
@@ -165,14 +117,16 @@ async def download_version(
|
||||
return await document_service.get_version_download_response(db, version_id, current_user)
|
||||
|
||||
|
||||
@router.get("/workflow-templates", response_model=list[WorkflowTemplateRead])
|
||||
async def list_workflow_templates(
|
||||
trial_id: uuid.UUID | None = None,
|
||||
@router.delete("/versions/{version_id}", status_code=status.HTTP_204_NO_CONTENT)
|
||||
async def delete_version(
|
||||
version_id: uuid.UUID,
|
||||
db: AsyncSession = Depends(get_db_session),
|
||||
current_user=Depends(get_current_user),
|
||||
) -> list[WorkflowTemplateRead]:
|
||||
templates = await document_service.list_workflow_templates(db, trial_id, current_user)
|
||||
return [WorkflowTemplateRead.model_validate(t) for t in templates]
|
||||
) -> None:
|
||||
role_value = current_user.role.value if hasattr(current_user.role, "value") else current_user.role
|
||||
if role_value != UserRole.ADMIN.value:
|
||||
raise HTTPException(status_code=status.HTTP_403_FORBIDDEN, detail="仅管理员可删除版本")
|
||||
await document_service.delete_version(db, version_id, current_user)
|
||||
|
||||
|
||||
@router.post(
|
||||
|
||||
Reference in New Issue
Block a user