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 ( ...@@ -21,7 +21,7 @@ from arkindex.documents.models import (
Transcription, Transcription,
TranscriptionEntity, 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.process.models import Process, ProcessDatasetSet, ProcessElement, WorkerActivity, WorkerRun
from arkindex.training.models import DatasetElement, DatasetSet from arkindex.training.models import DatasetElement, DatasetSet
from arkindex.users.models import User from arkindex.users.models import User
...@@ -41,6 +41,10 @@ def corpus_delete(corpus_id: str) -> None: ...@@ -41,6 +41,10 @@ def corpus_delete(corpus_id: str) -> None:
corpus.top_level_type_id = None corpus.top_level_type_id = None
corpus.save(update_fields=["top_level_type_id"]) 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 # Delete all related objects, bypassing RESTRICTs deletion rules
# and Django's way of loading everything into memory before deleting. # and Django's way of loading everything into memory before deleting.
querysets = [ querysets = [
...@@ -67,6 +71,8 @@ def corpus_delete(corpus_id: str) -> None: ...@@ -67,6 +71,8 @@ def corpus_delete(corpus_id: str) -> None:
Selection.objects.filter(element__corpus_id=corpus_id), Selection.objects.filter(element__corpus_id=corpus_id),
corpus.memberships.all(), corpus.memberships.all(),
corpus.exports.all(), corpus.exports.all(),
# Delete task artifacts
Artifact.objects.filter(task__process__corpus_id=corpus_id),
# ProcessDatasetSet M2M # ProcessDatasetSet M2M
ProcessDatasetSet.objects.filter(set__dataset__corpus_id=corpus_id), ProcessDatasetSet.objects.filter(set__dataset__corpus_id=corpus_id),
ProcessDatasetSet.objects.filter(process__corpus_id=corpus_id), ProcessDatasetSet.objects.filter(process__corpus_id=corpus_id),
......
...@@ -10,6 +10,11 @@ FROM "documents_corpus" ...@@ -10,6 +10,11 @@ FROM "documents_corpus"
WHERE "documents_corpus"."id" = '{corpus_id}'::uuid WHERE "documents_corpus"."id" = '{corpus_id}'::uuid
LIMIT 21; 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", SELECT "django_content_type"."id",
"django_content_type"."app_label", "django_content_type"."app_label",
"django_content_type"."model" "django_content_type"."model"
...@@ -152,6 +157,15 @@ DELETE ...@@ -152,6 +157,15 @@ DELETE
FROM "documents_corpusexport" FROM "documents_corpusexport"
WHERE "documents_corpusexport"."corpus_id" = '{corpus_id}'::uuid; 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 DELETE
FROM "process_processdatasetset" FROM "process_processdatasetset"
WHERE "process_processdatasetset"."id" IN WHERE "process_processdatasetset"."id" IN
......
...@@ -14,6 +14,11 @@ UPDATE "documents_corpus" ...@@ -14,6 +14,11 @@ UPDATE "documents_corpus"
SET "top_level_type_id" = NULL SET "top_level_type_id" = NULL
WHERE "documents_corpus"."id" = '{corpus_id}'::uuid; 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", SELECT "django_content_type"."id",
"django_content_type"."app_label", "django_content_type"."app_label",
"django_content_type"."model" "django_content_type"."model"
...@@ -156,6 +161,15 @@ DELETE ...@@ -156,6 +161,15 @@ DELETE
FROM "documents_corpusexport" FROM "documents_corpusexport"
WHERE "documents_corpusexport"."corpus_id" = '{corpus_id}'::uuid; 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 DELETE
FROM "process_processdatasetset" FROM "process_processdatasetset"
WHERE "process_processdatasetset"."id" IN WHERE "process_processdatasetset"."id" IN
......