mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-02-11 23:59:31 -06:00
Add delete-version endpoint
This commit is contained in:
@@ -1527,6 +1527,55 @@ class DocumentViewSet(
|
|||||||
"Error updating document, check logs for more detail.",
|
"Error updating document, check logs for more detail.",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@action(
|
||||||
|
methods=["delete"],
|
||||||
|
detail=True,
|
||||||
|
url_path="versions/(?P<version_id>[^/.]+)",
|
||||||
|
)
|
||||||
|
def delete_version(self, request, pk=None, version_id=None):
|
||||||
|
try:
|
||||||
|
head_doc = Document.objects.select_related("owner").get(pk=pk)
|
||||||
|
if head_doc.head_version_id is not None:
|
||||||
|
head_doc = Document.objects.select_related("owner").get(
|
||||||
|
pk=head_doc.head_version_id,
|
||||||
|
)
|
||||||
|
except Document.DoesNotExist:
|
||||||
|
raise Http404
|
||||||
|
|
||||||
|
if request.user is not None and not has_perms_owner_aware(
|
||||||
|
request.user,
|
||||||
|
"delete_document",
|
||||||
|
head_doc,
|
||||||
|
):
|
||||||
|
return HttpResponseForbidden("Insufficient permissions")
|
||||||
|
|
||||||
|
try:
|
||||||
|
version_doc = Document.objects.select_related("owner").get(
|
||||||
|
pk=version_id,
|
||||||
|
)
|
||||||
|
except Document.DoesNotExist:
|
||||||
|
raise Http404
|
||||||
|
|
||||||
|
if version_doc.head_version_id != head_doc.id:
|
||||||
|
raise Http404
|
||||||
|
|
||||||
|
from documents import index
|
||||||
|
|
||||||
|
index.remove_document_from_index(version_doc)
|
||||||
|
version_doc.delete()
|
||||||
|
|
||||||
|
current = (
|
||||||
|
Document.objects.filter(Q(id=head_doc.id) | Q(head_version=head_doc))
|
||||||
|
.order_by("-id")
|
||||||
|
.first()
|
||||||
|
)
|
||||||
|
return Response(
|
||||||
|
{
|
||||||
|
"result": "OK",
|
||||||
|
"current_version_id": current.id if current else head_doc.id,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
class ChatStreamingSerializer(serializers.Serializer):
|
class ChatStreamingSerializer(serializers.Serializer):
|
||||||
q = serializers.CharField(required=True)
|
q = serializers.CharField(required=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user