diff --git a/src/documents/bulk_edit.py b/src/documents/bulk_edit.py index 6b5f6ae11..4418fb14b 100644 --- a/src/documents/bulk_edit.py +++ b/src/documents/bulk_edit.py @@ -31,6 +31,7 @@ from documents.permissions import set_permissions_for_object from documents.plugins.helpers import DocumentsStatusManager from documents.tasks import bulk_update_documents 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.versioning import get_latest_version_for_root from documents.versioning import get_root_document @@ -669,12 +670,8 @@ def merge_as_versions( root_document.modified = timezone.now() root_document.save(update_fields=["modified"]) - # We need to remove these explicitly from search - from documents.search import get_backend - - with get_backend().batch_update() as batch: - for source_id in source_ids: - batch.remove(source_id) + for source_id in source_ids: + remove_document_from_index.apply_async(args=[source_id]) bulk_update_documents.apply_async( kwargs={"document_ids": [root_document_id]}, diff --git a/src/documents/tests/test_merge_documents_as_versions.py b/src/documents/tests/test_merge_documents_as_versions.py index 808926dd0..ffeb851fa 100644 --- a/src/documents/tests/test_merge_documents_as_versions.py +++ b/src/documents/tests/test_merge_documents_as_versions.py @@ -161,10 +161,10 @@ class TestMergeDocumentsAsVersionsSerializer(TestCase): class TestMergeDocumentsAsVersions(TestCase): @mock.patch("documents.bulk_edit.DocumentsStatusManager") @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( self, - get_backend_mock, + remove_from_index_mock, bulk_update_mock, status_manager_mock, ) -> None: @@ -205,10 +205,9 @@ class TestMergeDocumentsAsVersions(TestCase): self.assertGreater(root.modified, original_modified) self.assertEqual(existing_version.root_document_id, root.id) - batch = get_backend_mock.return_value.batch_update.return_value.__enter__.return_value self.assertEqual( - [call.args[0] for call in batch.remove.call_args_list], - [source1.id, source2.id], + [call.kwargs["args"] for call in remove_from_index_mock.call_args_list], + [[source1.id], [source2.id]], ) bulk_update_mock.assert_called_once_with( kwargs={"document_ids": [root.id]}, @@ -220,10 +219,10 @@ class TestMergeDocumentsAsVersions(TestCase): @mock.patch("documents.bulk_edit.DocumentsStatusManager") @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( self, - _get_backend_mock, + _remove_from_index_mock, _bulk_update_mock, _status_manager_mock, ) -> None: @@ -241,10 +240,10 @@ class TestMergeDocumentsAsVersions(TestCase): @mock.patch("documents.bulk_edit.DocumentsStatusManager") @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( self, - get_backend_mock, + remove_from_index_mock, bulk_update_mock, status_manager_mock, ) -> None: @@ -265,7 +264,7 @@ class TestMergeDocumentsAsVersions(TestCase): source.refresh_from_db() 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() status_manager_mock.assert_not_called() @@ -358,10 +357,10 @@ class TestMergeDocumentsAsVersionsAPI(APITestCase): @mock.patch("documents.bulk_edit.DocumentsStatusManager") @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( self, - get_backend_mock, + remove_from_index_mock, bulk_update_mock, status_manager_mock, ) -> None: @@ -393,8 +392,11 @@ class TestMergeDocumentsAsVersionsAPI(APITestCase): [version["id"] for version in versions if version["is_root"]], [self.doc2.id], ) - get_backend_mock.assert_called_once() - bulk_update_mock.assert_called_once() + remove_from_index_mock.assert_called_once_with(args=[self.doc1.id]) + 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( [self.doc1.id], )