From 7bd77eb1c90a9161b34c79d023896af70b5b87d4 Mon Sep 17 00:00:00 2001 From: shamoon <4887959+shamoon@users.noreply.github.com> Date: Tue, 25 Jun 2024 21:33:42 -0700 Subject: [PATCH] Enhancement: use initiator of split / merge as owner of new document --- src/documents/bulk_edit.py | 14 +++++++++++++- src/documents/views.py | 5 +++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/documents/bulk_edit.py b/src/documents/bulk_edit.py index 7733a8d68..8ffefd1bd 100644 --- a/src/documents/bulk_edit.py +++ b/src/documents/bulk_edit.py @@ -9,6 +9,7 @@ from celery import chord from celery import group from celery import shared_task from django.conf import settings +from django.contrib.auth.models import User from django.db.models import Q from documents.data_models import ConsumableDocument @@ -242,6 +243,7 @@ def merge( doc_ids: list[int], metadata_document_id: Optional[int] = None, delete_originals: bool = False, + user: User = None, ): logger.info( f"Attempting to merge {len(doc_ids)} documents into a single document.", @@ -284,6 +286,9 @@ def merge( else: overrides = DocumentMetadataOverrides() + if user is not None: + overrides.owner_id = user.id + logger.info("Adding merged document to the task queue.") consume_task = consume_file.s( @@ -305,7 +310,12 @@ def merge( return "OK" -def split(doc_ids: list[int], pages: list[list[int]], delete_originals: bool = False): +def split( + doc_ids: list[int], + pages: list[list[int]], + delete_originals: bool = False, + user: User = None, +): logger.info( f"Attempting to split document {doc_ids[0]} into {len(pages)} documents", ) @@ -330,6 +340,8 @@ def split(doc_ids: list[int], pages: list[list[int]], delete_originals: bool = F overrides = DocumentMetadataOverrides().from_document(doc) overrides.title = f"{doc.title} (split {idx + 1})" + if user is not None: + overrides.owner_id = user.id logger.info( f"Adding split document with pages {split_doc} to the task queue.", ) diff --git a/src/documents/views.py b/src/documents/views.py index affda436c..af0b57e29 100644 --- a/src/documents/views.py +++ b/src/documents/views.py @@ -959,6 +959,11 @@ class BulkEditView(PassUserMixin): method = serializer.validated_data.get("method") parameters = serializer.validated_data.get("parameters") documents = serializer.validated_data.get("documents") + if method in [ + bulk_edit.split, + bulk_edit.merge, + ]: + parameters["user"] = user if not user.is_superuser: document_objs = Document.objects.select_related("owner").filter(