Enhancement: use initiator of split / merge as owner of new document

This commit is contained in:
shamoon 2024-06-25 21:33:42 -07:00
parent f3b7ae93f0
commit 7bd77eb1c9
2 changed files with 18 additions and 1 deletions

View File

@ -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.",
)

View File

@ -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(