Allow retrieve to pull specific version

This commit is contained in:
shamoon
2026-02-12 10:56:04 -08:00
parent 755915c357
commit aceeb26d32
2 changed files with 39 additions and 0 deletions

View File

@@ -555,3 +555,23 @@ class TestDocumentVersioningApi(DirectoriesMixin, APITestCase):
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data["content"], "v1-content")
def test_retrieve_with_version_param_returns_selected_version_content(self) -> None:
root = Document.objects.create(
title="root",
checksum="root",
mime_type="application/pdf",
content="root-content",
)
v1 = Document.objects.create(
title="v1",
checksum="v1",
mime_type="application/pdf",
root_document=root,
content="v1-content",
)
resp = self.client.get(f"/api/documents/{root.id}/?version={v1.id}")
self.assertEqual(resp.status_code, status.HTTP_200_OK)
self.assertEqual(resp.data["content"], "v1-content")

View File

@@ -856,6 +856,25 @@ class DocumentViewSet(
return Response({"root_id": root_doc.id})
def retrieve(
self,
request: Request,
*args: Any,
**kwargs: Any,
) -> Response:
response = super().retrieve(request, *args, **kwargs)
if (
"version" not in request.query_params
or not isinstance(response.data, dict)
or "content" not in response.data
):
return response
root_doc = self.get_object()
content_doc = self._resolve_file_doc(root_doc, request)
response.data["content"] = content_doc.content or ""
return response
def update(self, request, *args, **kwargs):
partial = kwargs.pop("partial", False)
root_doc = self.get_object()