From dad77a888817cfff443aa63ea64b592dfabe0d70 Mon Sep 17 00:00:00 2001 From: mlbonhomme <bonhomme@teklia.com> Date: Tue, 23 Apr 2024 16:07:17 +0200 Subject: [PATCH] Delete task artifacts before deleting processes in corpus delete --- arkindex/documents/tasks.py | 4 +++- arkindex/sql_validation/corpus_delete.sql | 9 +++++++++ arkindex/sql_validation/corpus_delete_top_level_type.sql | 9 +++++++++ 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/arkindex/documents/tasks.py b/arkindex/documents/tasks.py index 2dd9855b9b..5c2db2fd9f 100644 --- a/arkindex/documents/tasks.py +++ b/arkindex/documents/tasks.py @@ -21,7 +21,7 @@ from arkindex.documents.models import ( Transcription, TranscriptionEntity, ) -from arkindex.ponos.models import Task +from arkindex.ponos.models import Artifact, Task from arkindex.process.models import Process, ProcessDatasetSet, ProcessElement, WorkerActivity, WorkerRun from arkindex.training.models import DatasetElement, DatasetSet from arkindex.users.models import User @@ -67,6 +67,8 @@ def corpus_delete(corpus_id: str) -> None: Selection.objects.filter(element__corpus_id=corpus_id), corpus.memberships.all(), corpus.exports.all(), + # Delete task artifacts + Artifact.objects.filter(task__process__corpus_id=corpus_id), # ProcessDatasetSet M2M ProcessDatasetSet.objects.filter(set__dataset__corpus_id=corpus_id), ProcessDatasetSet.objects.filter(process__corpus_id=corpus_id), diff --git a/arkindex/sql_validation/corpus_delete.sql b/arkindex/sql_validation/corpus_delete.sql index 2ebb6b6f75..d1abf7227d 100644 --- a/arkindex/sql_validation/corpus_delete.sql +++ b/arkindex/sql_validation/corpus_delete.sql @@ -152,6 +152,15 @@ DELETE FROM "documents_corpusexport" WHERE "documents_corpusexport"."corpus_id" = '{corpus_id}'::uuid; +DELETE +FROM "ponos_artifact" +WHERE "ponos_artifact"."id" IN + (SELECT U0."id" + FROM "ponos_artifact" U0 + INNER JOIN "ponos_task" U1 ON (U0."task_id" = U1."id") + INNER JOIN "process_process" U2 ON (U1."process_id" = U2."id") + WHERE U2."corpus_id" = '{corpus_id}'::uuid); + DELETE FROM "process_processdatasetset" WHERE "process_processdatasetset"."id" IN diff --git a/arkindex/sql_validation/corpus_delete_top_level_type.sql b/arkindex/sql_validation/corpus_delete_top_level_type.sql index 80ae4c77e8..2c86ce4af3 100644 --- a/arkindex/sql_validation/corpus_delete_top_level_type.sql +++ b/arkindex/sql_validation/corpus_delete_top_level_type.sql @@ -156,6 +156,15 @@ DELETE FROM "documents_corpusexport" WHERE "documents_corpusexport"."corpus_id" = '{corpus_id}'::uuid; +DELETE +FROM "ponos_artifact" +WHERE "ponos_artifact"."id" IN + (SELECT U0."id" + FROM "ponos_artifact" U0 + INNER JOIN "ponos_task" U1 ON (U0."task_id" = U1."id") + INNER JOIN "process_process" U2 ON (U1."process_id" = U2."id") + WHERE U2."corpus_id" = '{corpus_id}'::uuid); + DELETE FROM "process_processdatasetset" WHERE "process_processdatasetset"."id" IN -- GitLab