Skip to content
Snippets Groups Projects
Commit 795f510f authored by ml bonhomme's avatar ml bonhomme :bee: Committed by Erwan Rouchet
Browse files

Delete task parents m2m before tasks in corpus deletion

parent 15aa99e0
No related branches found
No related tags found
1 merge request!2220Delete task parents m2m before tasks in corpus deletion
......@@ -75,6 +75,8 @@ def corpus_delete(corpus_id: str) -> None:
ProcessDataset.objects.filter(process__corpus_id=corpus_id),
DatasetElement.objects.filter(dataset__corpus_id=corpus_id),
corpus.datasets.all(),
# Delete the hidden M2M task parents table
Task.parents.through.objects.filter(from_task__process__corpus_id=corpus_id),
Task.objects.filter(process__corpus_id=corpus_id),
corpus.elements.all(),
WorkerRun.objects.filter(process__corpus_id=corpus_id),
......
......@@ -2,7 +2,7 @@ from django.db.models.signals import pre_delete
from arkindex.documents.models import Corpus, Element, EntityType, MetaType, Transcription
from arkindex.documents.tasks import corpus_delete
from arkindex.ponos.models import Farm
from arkindex.ponos.models import Farm, State, Task
from arkindex.process.models import CorpusWorkerVersion, ProcessMode, Repository, WorkerVersion
from arkindex.project.tests import FixtureTestCase, force_constraints_immediate
from arkindex.training.models import Dataset
......@@ -42,6 +42,20 @@ class TestDeleteCorpus(FixtureTestCase):
)
element_process.elements.add(element)
worker_run = element_process.worker_runs.create(version=cls.worker_version, parents=[])
task_1, task_2, task_3 = Task.objects.bulk_create(
[
Task(
run=0,
depth=0,
process=element_process,
worker_run=worker_run,
slug=f"unscheduled task {i}",
state=State.Unscheduled,
) for i in range(1, 4)
]
)
task_1.parents.set([task_2])
task_3.parents.set([task_1, task_2])
element.worker_run = worker_run
element.worker_version = cls.worker_version
element.save()
......
......@@ -192,6 +192,15 @@ DELETE
FROM "training_dataset"
WHERE "training_dataset"."corpus_id" = '{corpus_id}'::uuid;
DELETE
FROM "ponos_task_parents"
WHERE "ponos_task_parents"."id" IN
(SELECT U0."id"
FROM "ponos_task_parents" U0
INNER JOIN "ponos_task" U1 ON (U0."from_task_id" = U1."id")
INNER JOIN "process_process" U2 ON (U1."process_id" = U2."id")
WHERE U2."corpus_id" = '{corpus_id}'::uuid);
DELETE
FROM "ponos_task"
WHERE "ponos_task"."id" IN
......
......@@ -196,6 +196,15 @@ DELETE
FROM "training_dataset"
WHERE "training_dataset"."corpus_id" = '{corpus_id}'::uuid;
DELETE
FROM "ponos_task_parents"
WHERE "ponos_task_parents"."id" IN
(SELECT U0."id"
FROM "ponos_task_parents" U0
INNER JOIN "ponos_task" U1 ON (U0."from_task_id" = U1."id")
INNER JOIN "process_process" U2 ON (U1."process_id" = U2."id")
WHERE U2."corpus_id" = '{corpus_id}'::uuid);
DELETE
FROM "ponos_task"
WHERE "ponos_task"."id" IN
......
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