From 9efef8dac20f31b4832d3b456dabd0dd86a3ac6d Mon Sep 17 00:00:00 2001
From: Erwan Rouchet <rouchet@teklia.com>
Date: Tue, 30 Jul 2024 15:47:28 +0200
Subject: [PATCH] Export dataset descriptions

---
 arkindex/documents/export/dataset.sql                 |  1 +
 arkindex/documents/export/structure.sql               |  1 +
 arkindex/documents/management/commands/load_export.py |  2 +-
 arkindex/documents/tests/commands/test_load_export.py | 11 +++++++----
 4 files changed, 10 insertions(+), 5 deletions(-)

diff --git a/arkindex/documents/export/dataset.sql b/arkindex/documents/export/dataset.sql
index 48d54910f0..557ba99f05 100644
--- a/arkindex/documents/export/dataset.sql
+++ b/arkindex/documents/export/dataset.sql
@@ -1,6 +1,7 @@
 SELECT
     dataset.id,
     dataset.name,
+    dataset.description,
     dataset.state,
     string_agg(datasetset.name, ',')
 FROM training_dataset dataset
diff --git a/arkindex/documents/export/structure.sql b/arkindex/documents/export/structure.sql
index b3eca511e3..da2bafd292 100644
--- a/arkindex/documents/export/structure.sql
+++ b/arkindex/documents/export/structure.sql
@@ -171,6 +171,7 @@ CREATE TABLE metadata (
 CREATE TABLE dataset (
     id VARCHAR(37) NOT NULL,
     name VARCHAR(100) NOT NULL,
+    description TEXT NOT NULL,
     state VARCHAR(50) NOT NULL DEFAULT 'open',
     sets TEXT NOT NULL,
     PRIMARY KEY (id)
diff --git a/arkindex/documents/management/commands/load_export.py b/arkindex/documents/management/commands/load_export.py
index fcf94b6139..d3240d55f1 100644
--- a/arkindex/documents/management/commands/load_export.py
+++ b/arkindex/documents/management/commands/load_export.py
@@ -297,7 +297,7 @@ class Command(BaseCommand):
             corpus=self.corpus,
             name=row["name"],
             creator=self.user,
-            description="Imported dataset",
+            description=row["description"] if "description" in row.keys() else "Imported dataset",
         )]
 
     def convert_dataset_sets(self, row):
diff --git a/arkindex/documents/tests/commands/test_load_export.py b/arkindex/documents/tests/commands/test_load_export.py
index f1fca73548..ff43bf2fe3 100644
--- a/arkindex/documents/tests/commands/test_load_export.py
+++ b/arkindex/documents/tests/commands/test_load_export.py
@@ -13,7 +13,7 @@ from arkindex.documents.models import Corpus, Element, ElementPath, EntityType,
 from arkindex.documents.tasks import corpus_delete
 from arkindex.images.models import Image, ImageServer
 from arkindex.process.models import ProcessMode, Repository, Worker, WorkerRun, WorkerType, WorkerVersion
-from arkindex.project.tests import FixtureTestCase
+from arkindex.project.tests import FixtureTestCase, force_constraints_immediate
 from arkindex.training.models import Dataset, DatasetElement
 
 BASE_DIR = Path(__file__).absolute().parent
@@ -211,7 +211,8 @@ class TestLoadExport(FixtureTestCase):
         ImageServer.objects.all().delete()
         WorkerVersion.objects.filter(id=reco_version.id).delete()
 
-        call_command("load_export", db_path, "--email", self.user.email, "--corpus-name", "My corpus")
+        with force_constraints_immediate():
+            call_command("load_export", db_path, "--email", self.user.email, "--corpus-name", "My corpus")
 
         # Call dumpdata command after the import
         _, dump_path_after = tempfile.mkstemp(suffix=".json")
@@ -247,7 +248,8 @@ class TestLoadExport(FixtureTestCase):
         db.commit()
         db.close()
 
-        call_command("load_export", temp_file, "--email", self.user.email, "--corpus-name", "My corpus")
+        with force_constraints_immediate():
+            call_command("load_export", temp_file, "--email", self.user.email, "--corpus-name", "My corpus")
 
         corpus = Corpus.objects.get(name="My corpus")
         self.assertEqual(corpus.types.all().count(), 0)
@@ -307,7 +309,8 @@ class TestLoadExport(FixtureTestCase):
         # meaning the test can only fail.
         ElementPath.objects.filter(element__corpus=self.corpus).delete()
 
-        call_command("load_export", db_path, "--email", self.user.email, "--corpus-name", "My corpus")
+        with force_constraints_immediate():
+            call_command("load_export", db_path, "--email", self.user.email, "--corpus-name", "My corpus")
 
         corpus = Corpus.objects.get(name="My corpus")
         self.assertEqual(corpus.types.all().count(), 6)
-- 
GitLab