Skip to content
Snippets Groups Projects
Commit 534adbcf authored by Bastien Abadie's avatar Bastien Abadie
Browse files

Merge branch 'reindex-on-ml-delete' into 'master'

Trigger a reindex after deleting ML results

See merge request !583
parents b5e64bf0 fcae1b7e
No related branches found
No related tags found
1 merge request!583Trigger a reindex after deleting ML results
......@@ -5,6 +5,7 @@ from django.db.models.deletion import Collector
from django.db.models.signals import pre_delete
from arkindex_common.enums import MetaType
from arkindex.project.tools import disconnect_signal
from arkindex.project.triggers import reindex_start
from arkindex.dataimport.models import Event, Revision
from arkindex.documents.indexer import Indexer
from arkindex.documents.models import (
......@@ -141,6 +142,15 @@ class MLResultsConsumer(SyncConsumer):
transcriptions__isnull=True,
), batch_size)
# Trigger a reindexation to clear up deleted results from search indexes
reindex_start(
element=element_id,
corpus=corpus_id,
transcriptions=True,
elements=True,
entities=True,
)
class CorpusConsumer(SyncConsumer):
......
from unittest.mock import patch
from asyncmock import AsyncMock
from django.db.models import Q
from arkindex_common.enums import TranscriptionType, MetaType, EntityType
from arkindex.project.polygon import Polygon
......@@ -91,7 +93,9 @@ class TestMLResultsConsumer(FixtureTestCase):
with self.assertRaises(AssertionError):
MLResultsConsumer({}).ml_results_delete({})
def test_delete_corpus(self):
@patch('arkindex.project.triggers.get_channel_layer')
def test_delete_corpus(self, get_layer_mock):
get_layer_mock.return_value.send = AsyncMock()
querysets = self._get_querysets(self.corpus.elements.all())
for queryset in querysets:
......@@ -115,7 +119,19 @@ class TestMLResultsConsumer(FixtureTestCase):
self.assertEqual(metadata.type, MetaType.Text)
self.assertIsNone(metadata.entity)
def test_delete_element(self):
get_layer_mock().send.assert_called_once_with('reindex', {
'type': 'reindex.start',
'element': None,
'corpus': str(self.corpus.id),
'transcriptions': True,
'elements': True,
'entities': True,
'drop': False,
})
@patch('arkindex.project.triggers.get_channel_layer')
def test_delete_element(self, get_layer_mock):
get_layer_mock.return_value.send = AsyncMock()
folder1_querysets = self._get_querysets(
Element.objects.filter(Q(id=self.folder1.id) | Q(paths__path__last=self.folder1.id))
)
......@@ -144,3 +160,13 @@ class TestMLResultsConsumer(FixtureTestCase):
metadata = self.page2.metadatas.get(value='Some entity 2')
self.assertEqual(metadata.type, MetaType.Entity)
self.assertIsNotNone(metadata.entity)
get_layer_mock().send.assert_called_once_with('reindex', {
'type': 'reindex.start',
'element': str(self.folder1.id),
'corpus': str(self.corpus.id),
'transcriptions': True,
'elements': True,
'entities': True,
'drop': False,
})
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment