mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-02-16 00:19:32 -06:00
DRY
This commit is contained in:
@@ -993,6 +993,23 @@ class DocumentViewSet(
|
|||||||
latest = Document.objects.filter(root_document=root_doc).order_by("-id").first()
|
latest = Document.objects.filter(root_document=root_doc).order_by("-id").first()
|
||||||
return latest or root_doc
|
return latest or root_doc
|
||||||
|
|
||||||
|
def _get_effective_file_doc(
|
||||||
|
self,
|
||||||
|
request_doc: Document,
|
||||||
|
root_doc: Document,
|
||||||
|
request: Request,
|
||||||
|
) -> Document:
|
||||||
|
# If a version is explicitly requested, use it. Otherwise:
|
||||||
|
# - if pk is a root document: serve newest version
|
||||||
|
# - if pk is a version: serve that version
|
||||||
|
if "version" in request.query_params:
|
||||||
|
return self._resolve_file_doc(root_doc, request)
|
||||||
|
return (
|
||||||
|
self._resolve_file_doc(root_doc, request)
|
||||||
|
if request_doc.root_document_id is None
|
||||||
|
else request_doc
|
||||||
|
)
|
||||||
|
|
||||||
def file_response(self, pk, request, disposition):
|
def file_response(self, pk, request, disposition):
|
||||||
request_doc = Document.global_objects.select_related(
|
request_doc = Document.global_objects.select_related(
|
||||||
"owner",
|
"owner",
|
||||||
@@ -1005,17 +1022,7 @@ class DocumentViewSet(
|
|||||||
root_doc,
|
root_doc,
|
||||||
):
|
):
|
||||||
return HttpResponseForbidden("Insufficient permissions")
|
return HttpResponseForbidden("Insufficient permissions")
|
||||||
# If a version is explicitly requested, use it. Otherwise:
|
file_doc = self._get_effective_file_doc(request_doc, root_doc, request)
|
||||||
# - if pk is a root document: serve newest version
|
|
||||||
# - if pk is a version: serve that version
|
|
||||||
if "version" in request.query_params:
|
|
||||||
file_doc = self._resolve_file_doc(root_doc, request)
|
|
||||||
else:
|
|
||||||
file_doc = (
|
|
||||||
self._resolve_file_doc(root_doc, request)
|
|
||||||
if request_doc.root_document_id is None
|
|
||||||
else request_doc
|
|
||||||
)
|
|
||||||
return serve_file(
|
return serve_file(
|
||||||
doc=file_doc,
|
doc=file_doc,
|
||||||
use_archive=not self.original_requested(request)
|
use_archive=not self.original_requested(request)
|
||||||
@@ -1068,15 +1075,9 @@ class DocumentViewSet(
|
|||||||
except Document.DoesNotExist:
|
except Document.DoesNotExist:
|
||||||
raise Http404
|
raise Http404
|
||||||
|
|
||||||
# Choose the effective document (newest version by default, or explicit via ?version=)
|
# Choose the effective document (newest version by default,
|
||||||
if "version" in request.query_params:
|
# or explicit via ?version=).
|
||||||
doc = self._resolve_file_doc(root_doc, request)
|
doc = self._get_effective_file_doc(request_doc, root_doc, request)
|
||||||
else:
|
|
||||||
doc = (
|
|
||||||
self._resolve_file_doc(root_doc, request)
|
|
||||||
if request_doc.root_document_id is None
|
|
||||||
else request_doc
|
|
||||||
)
|
|
||||||
|
|
||||||
document_cached_metadata = get_metadata_cache(doc.pk)
|
document_cached_metadata = get_metadata_cache(doc.pk)
|
||||||
|
|
||||||
@@ -1258,14 +1259,7 @@ class DocumentViewSet(
|
|||||||
):
|
):
|
||||||
return HttpResponseForbidden("Insufficient permissions")
|
return HttpResponseForbidden("Insufficient permissions")
|
||||||
|
|
||||||
if "version" in request.query_params:
|
file_doc = self._get_effective_file_doc(request_doc, root_doc, request)
|
||||||
file_doc = self._resolve_file_doc(root_doc, request)
|
|
||||||
else:
|
|
||||||
file_doc = (
|
|
||||||
self._resolve_file_doc(root_doc, request)
|
|
||||||
if request_doc.root_document_id is None
|
|
||||||
else request_doc
|
|
||||||
)
|
|
||||||
|
|
||||||
return serve_file(
|
return serve_file(
|
||||||
doc=file_doc,
|
doc=file_doc,
|
||||||
@@ -1292,14 +1286,7 @@ class DocumentViewSet(
|
|||||||
root_doc,
|
root_doc,
|
||||||
):
|
):
|
||||||
return HttpResponseForbidden("Insufficient permissions")
|
return HttpResponseForbidden("Insufficient permissions")
|
||||||
if "version" in request.query_params:
|
file_doc = self._get_effective_file_doc(request_doc, root_doc, request)
|
||||||
file_doc = self._resolve_file_doc(root_doc, request)
|
|
||||||
else:
|
|
||||||
file_doc = (
|
|
||||||
self._resolve_file_doc(root_doc, request)
|
|
||||||
if request_doc.root_document_id is None
|
|
||||||
else request_doc
|
|
||||||
)
|
|
||||||
handle = file_doc.thumbnail_file
|
handle = file_doc.thumbnail_file
|
||||||
|
|
||||||
return HttpResponse(handle, content_type="image/webp")
|
return HttpResponse(handle, content_type="image/webp")
|
||||||
|
|||||||
Reference in New Issue
Block a user