mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-02-16 00:19:32 -06:00
Allow retrieve to pull specific version
This commit is contained in:
@@ -555,3 +555,23 @@ class TestDocumentVersioningApi(DirectoriesMixin, APITestCase):
|
|||||||
|
|
||||||
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
self.assertEqual(resp.status_code, status.HTTP_200_OK)
|
||||||
self.assertEqual(resp.data["content"], "v1-content")
|
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")
|
||||||
|
|||||||
@@ -856,6 +856,25 @@ class DocumentViewSet(
|
|||||||
|
|
||||||
return Response({"root_id": root_doc.id})
|
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):
|
def update(self, request, *args, **kwargs):
|
||||||
partial = kwargs.pop("partial", False)
|
partial = kwargs.pop("partial", False)
|
||||||
root_doc = self.get_object()
|
root_doc = self.get_object()
|
||||||
|
|||||||
Reference in New Issue
Block a user