Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • arkindex/backend
1 result
Show changes
Commits on Source (2)
......@@ -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
......@@ -41,6 +41,10 @@ def corpus_delete(corpus_id: str) -> None:
corpus.top_level_type_id = None
corpus.save(update_fields=["top_level_type_id"])
# Set process.element to NULL in all processes, to avoid IntegrityErrors when deleting elements, as
# elements are deleted before processes.
Process.objects.filter(corpus_id=corpus_id).exclude(element_id=None).update(element_id=None)
# Delete all related objects, bypassing RESTRICTs deletion rules
# and Django's way of loading everything into memory before deleting.
querysets = [
......@@ -67,6 +71,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),
......
......@@ -10,6 +10,11 @@ FROM "documents_corpus"
WHERE "documents_corpus"."id" = '{corpus_id}'::uuid
LIMIT 21;
UPDATE "process_process"
SET "element_id" = NULL
WHERE ("process_process"."corpus_id" = '{corpus_id}'::uuid
AND NOT ("process_process"."element_id" IS NULL));
SELECT "django_content_type"."id",
"django_content_type"."app_label",
"django_content_type"."model"
......@@ -152,6 +157,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
......
......@@ -14,6 +14,11 @@ UPDATE "documents_corpus"
SET "top_level_type_id" = NULL
WHERE "documents_corpus"."id" = '{corpus_id}'::uuid;
UPDATE "process_process"
SET "element_id" = NULL
WHERE ("process_process"."corpus_id" = '{corpus_id}'::uuid
AND NOT ("process_process"."element_id" IS NULL));
SELECT "django_content_type"."id",
"django_content_type"."app_label",
"django_content_type"."model"
......@@ -156,6 +161,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
......