diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-04-03 17:38:15 +0200 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-04-03 17:44:18 +0200 |
commit | 5b35d5ba7e689fefb36d5af169bf0b162463708d (patch) | |
tree | d7b56a209a5f0814ea8cbdf1aba84085dfcf83c7 | |
parent | 5d88620443d918c389775c9f2e517141a403dc19 (diff) | |
download | Ishtar-5b35d5ba7e689fefb36d5af169bf0b162463708d.tar.bz2 Ishtar-5b35d5ba7e689fefb36d5af169bf0b162463708d.zip |
🐛 fix csv export with '|' syntax for export columns - ✅ test find csv export
-rw-r--r-- | archaeological_finds/tests.py | 36 | ||||
-rw-r--r-- | ishtar_common/views_item.py | 6 |
2 files changed, 40 insertions, 2 deletions
diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index 2cf184561..c36327bae 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -18,6 +18,7 @@ # See the file COPYING for details. from copy import deepcopy import csv +from io import StringIO import json import os import shutil @@ -1004,6 +1005,41 @@ class ImportFindTest(BaseImportFindTest): self.assertEqual(len(impt.errors), 0) +class ExportTest(FindInit, TestCase): + fixtures = FIND_TOWNS_FIXTURES + + def setUp(self): + super().setUp() + self.username, self.password, self.user = create_superuser() + + def test_ishtar_export_find(self): + self.create_finds(data={"label": "1234"}) + self.create_finds(data={"label": "567"}) + MCC = ImporterType.objects.get(name="MCC - Mobilier") + c = Client() + url = reverse( + "get-by-importer", kwargs={"slug": MCC.slug, "type": "csv"} + ) + response = c.get(url) + # no result when no authentication + self.assertTrue(not response.content) + c.login(username=self.username, password=self.password) + response = c.get(url) + ENCODING = settings.ENCODING or "utf-8" + rows = list(csv.reader(StringIO(response.content.decode(ENCODING)))) + # one header + two find + self.assertEqual(len(rows), 3) + row_cr = rows[1] + for row in rows[1:]: + self.assertEqual(row[0], "1") + self.assertEqual(row[1], "12345") + self.assertEqual(row[2], "A1") + self.assertEqual(row[3], "Context record") + self.assertEqual(row[4], "Base find") + self.assertEqual(rows[1][11], "1234") + self.assertEqual(rows[2][11], "567") + + class ImportFindLiveServerTest(LiveServerTestCase, BaseImportFindTest): def setUp(self): diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index 3a2fb8136..82548932f 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -3216,8 +3216,10 @@ def get_item( if len(data[1:]) <= idx + delta: break val = data[1:][idx + delta] - if col_name and "|" in col_name[0]: - for delta_idx in range(len(col_name[0].split("|")) - 1): + ccol_name = col_name[0] if isinstance(col_name, (list, tuple)) else col_name + if ccol_name and "|" in ccol_name: + nb_sub_cols = len(ccol_name.split("|")) + for delta_idx in range(nb_sub_cols - 1): delta += 1 val += data[1:][idx + delta] row.append(val) |