feat(documents): refresh detail pages and attachment cards
This commit is contained in:
@@ -77,6 +77,13 @@ def _version_snapshot(version: DocumentVersion) -> dict:
|
||||
}
|
||||
|
||||
|
||||
def _version_read(version: DocumentVersion, users_by_id: dict[uuid.UUID, object] | None = None) -> DocumentVersionRead:
|
||||
creator = users_by_id.get(version.created_by) if users_by_id and version.created_by else None
|
||||
return DocumentVersionRead.model_validate(version).model_copy(
|
||||
update={"created_by_user": UserDisplay.model_validate(creator) if creator else None}
|
||||
)
|
||||
|
||||
|
||||
async def _ensure_study_access(db: AsyncSession, trial_id: uuid.UUID, current_user, action: str):
|
||||
study = await study_crud.get(db, trial_id)
|
||||
if not study:
|
||||
@@ -242,6 +249,8 @@ async def get_document_detail(
|
||||
owner_obj = await user_crud.get_by_id(db, doc.owner_id)
|
||||
if owner_obj:
|
||||
owner = UserDisplay.model_validate(owner_obj)
|
||||
creator_ids = {v.created_by for v in versions if v.created_by}
|
||||
version_creators = await user_crud.get_users_by_ids(db, creator_ids)
|
||||
return DocumentDetail(
|
||||
id=doc.id,
|
||||
trial_id=doc.trial_id,
|
||||
@@ -257,7 +266,7 @@ async def get_document_detail(
|
||||
created_at=doc.created_at,
|
||||
updated_at=doc.updated_at,
|
||||
owner=owner,
|
||||
version_timeline=[DocumentVersionRead.model_validate(v) for v in versions],
|
||||
version_timeline=[_version_read(v, version_creators) for v in versions],
|
||||
distribution_stats=distribution_stats,
|
||||
)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user