mirror of
https://github.com/paperless-ngx/paperless-ngx.git
synced 2026-08-16 07:43:22 +00:00
Use the task for remove from index
This commit is contained in:
@@ -31,6 +31,7 @@ from documents.permissions import set_permissions_for_object
|
|||||||
from documents.plugins.helpers import DocumentsStatusManager
|
from documents.plugins.helpers import DocumentsStatusManager
|
||||||
from documents.tasks import bulk_update_documents
|
from documents.tasks import bulk_update_documents
|
||||||
from documents.tasks import consume_file
|
from documents.tasks import consume_file
|
||||||
|
from documents.tasks import remove_document_from_index
|
||||||
from documents.tasks import update_document_content_maybe_archive_file
|
from documents.tasks import update_document_content_maybe_archive_file
|
||||||
from documents.versioning import get_latest_version_for_root
|
from documents.versioning import get_latest_version_for_root
|
||||||
from documents.versioning import get_root_document
|
from documents.versioning import get_root_document
|
||||||
@@ -669,12 +670,8 @@ def merge_as_versions(
|
|||||||
root_document.modified = timezone.now()
|
root_document.modified = timezone.now()
|
||||||
root_document.save(update_fields=["modified"])
|
root_document.save(update_fields=["modified"])
|
||||||
|
|
||||||
# We need to remove these explicitly from search
|
for source_id in source_ids:
|
||||||
from documents.search import get_backend
|
remove_document_from_index.apply_async(args=[source_id])
|
||||||
|
|
||||||
with get_backend().batch_update() as batch:
|
|
||||||
for source_id in source_ids:
|
|
||||||
batch.remove(source_id)
|
|
||||||
|
|
||||||
bulk_update_documents.apply_async(
|
bulk_update_documents.apply_async(
|
||||||
kwargs={"document_ids": [root_document_id]},
|
kwargs={"document_ids": [root_document_id]},
|
||||||
|
|||||||
@@ -161,10 +161,10 @@ class TestMergeDocumentsAsVersionsSerializer(TestCase):
|
|||||||
class TestMergeDocumentsAsVersions(TestCase):
|
class TestMergeDocumentsAsVersions(TestCase):
|
||||||
@mock.patch("documents.bulk_edit.DocumentsStatusManager")
|
@mock.patch("documents.bulk_edit.DocumentsStatusManager")
|
||||||
@mock.patch("documents.bulk_edit.bulk_update_documents.apply_async")
|
@mock.patch("documents.bulk_edit.bulk_update_documents.apply_async")
|
||||||
@mock.patch("documents.search.get_backend")
|
@mock.patch("documents.bulk_edit.remove_document_from_index.apply_async")
|
||||||
def test_merges_documents_in_creation_order(
|
def test_merges_documents_in_creation_order(
|
||||||
self,
|
self,
|
||||||
get_backend_mock,
|
remove_from_index_mock,
|
||||||
bulk_update_mock,
|
bulk_update_mock,
|
||||||
status_manager_mock,
|
status_manager_mock,
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -205,10 +205,9 @@ class TestMergeDocumentsAsVersions(TestCase):
|
|||||||
self.assertGreater(root.modified, original_modified)
|
self.assertGreater(root.modified, original_modified)
|
||||||
self.assertEqual(existing_version.root_document_id, root.id)
|
self.assertEqual(existing_version.root_document_id, root.id)
|
||||||
|
|
||||||
batch = get_backend_mock.return_value.batch_update.return_value.__enter__.return_value
|
|
||||||
self.assertEqual(
|
self.assertEqual(
|
||||||
[call.args[0] for call in batch.remove.call_args_list],
|
[call.kwargs["args"] for call in remove_from_index_mock.call_args_list],
|
||||||
[source1.id, source2.id],
|
[[source1.id], [source2.id]],
|
||||||
)
|
)
|
||||||
bulk_update_mock.assert_called_once_with(
|
bulk_update_mock.assert_called_once_with(
|
||||||
kwargs={"document_ids": [root.id]},
|
kwargs={"document_ids": [root.id]},
|
||||||
@@ -220,10 +219,10 @@ class TestMergeDocumentsAsVersions(TestCase):
|
|||||||
|
|
||||||
@mock.patch("documents.bulk_edit.DocumentsStatusManager")
|
@mock.patch("documents.bulk_edit.DocumentsStatusManager")
|
||||||
@mock.patch("documents.bulk_edit.bulk_update_documents.apply_async")
|
@mock.patch("documents.bulk_edit.bulk_update_documents.apply_async")
|
||||||
@mock.patch("documents.search.get_backend")
|
@mock.patch("documents.bulk_edit.remove_document_from_index.apply_async")
|
||||||
def test_sets_version_label_for_one_source_document(
|
def test_sets_version_label_for_one_source_document(
|
||||||
self,
|
self,
|
||||||
_get_backend_mock,
|
_remove_from_index_mock,
|
||||||
_bulk_update_mock,
|
_bulk_update_mock,
|
||||||
_status_manager_mock,
|
_status_manager_mock,
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -241,10 +240,10 @@ class TestMergeDocumentsAsVersions(TestCase):
|
|||||||
|
|
||||||
@mock.patch("documents.bulk_edit.DocumentsStatusManager")
|
@mock.patch("documents.bulk_edit.DocumentsStatusManager")
|
||||||
@mock.patch("documents.bulk_edit.bulk_update_documents.apply_async")
|
@mock.patch("documents.bulk_edit.bulk_update_documents.apply_async")
|
||||||
@mock.patch("documents.search.get_backend")
|
@mock.patch("documents.bulk_edit.remove_document_from_index.apply_async")
|
||||||
def test_rejects_source_document_with_versions(
|
def test_rejects_source_document_with_versions(
|
||||||
self,
|
self,
|
||||||
get_backend_mock,
|
remove_from_index_mock,
|
||||||
bulk_update_mock,
|
bulk_update_mock,
|
||||||
status_manager_mock,
|
status_manager_mock,
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -265,7 +264,7 @@ class TestMergeDocumentsAsVersions(TestCase):
|
|||||||
|
|
||||||
source.refresh_from_db()
|
source.refresh_from_db()
|
||||||
self.assertIsNone(source.root_document_id)
|
self.assertIsNone(source.root_document_id)
|
||||||
get_backend_mock.assert_not_called()
|
remove_from_index_mock.assert_not_called()
|
||||||
bulk_update_mock.assert_not_called()
|
bulk_update_mock.assert_not_called()
|
||||||
status_manager_mock.assert_not_called()
|
status_manager_mock.assert_not_called()
|
||||||
|
|
||||||
@@ -358,10 +357,10 @@ class TestMergeDocumentsAsVersionsAPI(APITestCase):
|
|||||||
|
|
||||||
@mock.patch("documents.bulk_edit.DocumentsStatusManager")
|
@mock.patch("documents.bulk_edit.DocumentsStatusManager")
|
||||||
@mock.patch("documents.bulk_edit.bulk_update_documents.apply_async")
|
@mock.patch("documents.bulk_edit.bulk_update_documents.apply_async")
|
||||||
@mock.patch("documents.search.get_backend")
|
@mock.patch("documents.bulk_edit.remove_document_from_index.apply_async")
|
||||||
def test_merges_and_returns_documents_as_versions(
|
def test_merges_and_returns_documents_as_versions(
|
||||||
self,
|
self,
|
||||||
get_backend_mock,
|
remove_from_index_mock,
|
||||||
bulk_update_mock,
|
bulk_update_mock,
|
||||||
status_manager_mock,
|
status_manager_mock,
|
||||||
) -> None:
|
) -> None:
|
||||||
@@ -393,8 +392,11 @@ class TestMergeDocumentsAsVersionsAPI(APITestCase):
|
|||||||
[version["id"] for version in versions if version["is_root"]],
|
[version["id"] for version in versions if version["is_root"]],
|
||||||
[self.doc2.id],
|
[self.doc2.id],
|
||||||
)
|
)
|
||||||
get_backend_mock.assert_called_once()
|
remove_from_index_mock.assert_called_once_with(args=[self.doc1.id])
|
||||||
bulk_update_mock.assert_called_once()
|
bulk_update_mock.assert_called_once_with(
|
||||||
|
kwargs={"document_ids": [self.doc2.id]},
|
||||||
|
headers={"trigger_source": "system"},
|
||||||
|
)
|
||||||
status_manager_mock.return_value.send_documents_deleted.assert_called_once_with(
|
status_manager_mock.return_value.send_documents_deleted.assert_called_once_with(
|
||||||
[self.doc1.id],
|
[self.doc1.id],
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user