Use the task for remove from index

This commit is contained in:
shamoon
2026-08-05 01:46:41 -07:00
parent 9569309709
commit 4bf9efb89e
2 changed files with 19 additions and 20 deletions
+3 -6
View File
@@ -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],
) )