diff --git a/arkindex/documents/tasks.py b/arkindex/documents/tasks.py index 1ef26c2177f3f96083cdca6a6c8835187b72c8f7..c73f7db481033c2ddf771e28b868a847042ee290 100644 --- a/arkindex/documents/tasks.py +++ b/arkindex/documents/tasks.py @@ -102,6 +102,7 @@ def worker_results_delete(corpus_id: str, version_id: str, parent_id: str) -> No | Q(entity__corpus_id=corpus_id) ) ) + metadata = MetaData.objects.filter(worker_version_id=version_id, element__corpus_id=corpus_id) if parent_id: elements = elements.filter(Q(id=parent_id) | Q(paths__path__overlap=[parent_id])) @@ -110,12 +111,14 @@ def worker_results_delete(corpus_id: str, version_id: str, parent_id: str) -> No transcription_entities_filter = Q(transcription__element_id=parent_id) | Q(transcription__element__paths__path__overlap=[parent_id]) transcription_entities = transcription_entities.filter(transcription_entities_filter) worker_transcription_entities = worker_transcription_entities.filter(transcription_entities_filter) + metadata = metadata.filter(Q(element_id=parent_id) | Q(element__paths__path__overlap=[parent_id])) elements.trash() classifications.delete() transcription_entities.delete() worker_transcription_entities.delete() transcriptions._raw_delete(using='default') + metadata.delete() @job('high', timeout=settings.RQ_TIMEOUTS['move_element']) diff --git a/arkindex/documents/tests/tasks/test_worker_results_delete.py b/arkindex/documents/tests/tasks/test_worker_results_delete.py index cb9f5849d1c2adeff0680b6c93caa04c5c4baa32..ef094fff82bf74f6293c5dcc54b97b0030551fff 100644 --- a/arkindex/documents/tests/tasks/test_worker_results_delete.py +++ b/arkindex/documents/tests/tasks/test_worker_results_delete.py @@ -8,7 +8,6 @@ class TestDeleteWorkerResults(FixtureTestCase): @classmethod def setUpTestData(cls): - super().setUpTestData() super().setUpTestData() cls.text = MLClass.objects.create(name='text', corpus=cls.corpus) cls.version_1 = WorkerVersion.objects.get(worker__slug='reco') diff --git a/arkindex/sql_validation/worker_results_delete_in_corpus.sql b/arkindex/sql_validation/worker_results_delete_in_corpus.sql index 749316f1b05ac39009a580eb303a35e796e4a321..99a3e2a40f473016f63e7893c8b8b49b053c69b6 100644 --- a/arkindex/sql_validation/worker_results_delete_in_corpus.sql +++ b/arkindex/sql_validation/worker_results_delete_in_corpus.sql @@ -256,5 +256,14 @@ WHERE "documents_transcription"."id" IN (SELECT U0."id" FROM "documents_transcription" U0 INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id") + WHERE (U1."corpus_id" = '{corpus_id}'::uuid + AND U0."worker_version_id" = '{version_id}'::uuid)); + +DELETE +FROM "documents_metadata" +WHERE "documents_metadata"."id" IN + (SELECT U0."id" + FROM "documents_metadata" U0 + INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id") WHERE (U1."corpus_id" = '{corpus_id}'::uuid AND U0."worker_version_id" = '{version_id}'::uuid)) diff --git a/arkindex/sql_validation/worker_results_delete_under_parent.sql b/arkindex/sql_validation/worker_results_delete_under_parent.sql index cae89ae74d3d40680fa3b0da03a8bb13b17ee1dd..948a2e7f6397d2b1ea2eac30d52fcfb5785b816d 100644 --- a/arkindex/sql_validation/worker_results_delete_under_parent.sql +++ b/arkindex/sql_validation/worker_results_delete_under_parent.sql @@ -174,6 +174,18 @@ WHERE "documents_transcription"."id" IN FROM "documents_transcription" U0 INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id") LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id") + WHERE (U1."corpus_id" = '{corpus_id}'::uuid + AND U0."worker_version_id" = '{version_id}'::uuid + AND (U0."element_id" = '{parent_id}'::uuid + OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[]))); + +DELETE +FROM "documents_metadata" +WHERE "documents_metadata"."id" IN + (SELECT U0."id" + FROM "documents_metadata" U0 + INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id") + LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id") WHERE (U1."corpus_id" = '{corpus_id}'::uuid AND U0."worker_version_id" = '{version_id}'::uuid AND (U0."element_id" = '{parent_id}'::uuid diff --git a/arkindex/sql_validation/worker_results_delete_under_parent_included.sql b/arkindex/sql_validation/worker_results_delete_under_parent_included.sql index 083a76fc72fda27271a8345c4370c0b9929cd925..4796cae3dbf85b57379399c10afcfef3d12051cd 100644 --- a/arkindex/sql_validation/worker_results_delete_under_parent_included.sql +++ b/arkindex/sql_validation/worker_results_delete_under_parent_included.sql @@ -329,6 +329,18 @@ WHERE "documents_transcription"."id" IN FROM "documents_transcription" U0 INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id") LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id") + WHERE (U1."corpus_id" = '{corpus_id}'::uuid + AND U0."worker_version_id" = '{version_id}'::uuid + AND (U0."element_id" = '{parent_id}'::uuid + OR U4."path" && ARRAY['{parent_id}'::uuid]::uuid[]))); + +DELETE +FROM "documents_metadata" +WHERE "documents_metadata"."id" IN + (SELECT U0."id" + FROM "documents_metadata" U0 + INNER JOIN "documents_element" U1 ON (U0."element_id" = U1."id") + LEFT OUTER JOIN "documents_elementpath" U4 ON (U1."id" = U4."element_id") WHERE (U1."corpus_id" = '{corpus_id}'::uuid AND U0."worker_version_id" = '{version_id}'::uuid AND (U0."element_id" = '{parent_id}'::uuid