summaryrefslogtreecommitdiff
path: root/archaeological_context_records
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2026-02-11 16:19:18 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2026-02-12 17:46:56 +0100
commite346a2397b717caacfc03150361b1595bb250e27 (patch)
tree76e041cae9a48470d8d8899216f9feb4e2ef9dc8 /archaeological_context_records
parentd03cf3dbfef808cda84b0f35c467e6d97829f6e5 (diff)
downloadIshtar-e346a2397b717caacfc03150361b1595bb250e27.tar.bz2
Ishtar-e346a2397b717caacfc03150361b1595bb250e27.zip
🐛 CSV export: fix export of json field when a json field is used as search (refs #6602)
Diffstat (limited to 'archaeological_context_records')
-rw-r--r--archaeological_context_records/tests.py59
1 files changed, 59 insertions, 0 deletions
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py
index 22c9d9197..e0c6e4399 100644
--- a/archaeological_context_records/tests.py
+++ b/archaeological_context_records/tests.py
@@ -34,11 +34,17 @@ from django.utils.translation import pgettext_lazy
from ishtar_common.models import (
Area,
+ CustomForm,
+ CustomFormJsonField,
+ FormaterType,
get_current_profile,
+ ImporterColumn,
ImporterModel,
ImporterType,
+ ImportTarget,
IshtarSiteProfile,
IshtarUser,
+ JsonDataField,
ProfileType,
Town,
UserProfile,
@@ -354,6 +360,59 @@ class ExportTest(ContextRecordInit, TestCase):
self.assertEqual(row_cr[1], "12345")
self.assertEqual(row_cr[2], "A1")
+ def test_ishtar_export_json_field(self):
+ """
+ Export JSON fields with a JSON search (#6602)
+ """
+ ope = self.create_operation()[0]
+ ope.code_patriarche = "45000"
+ ope.save()
+ self.create_context_record(
+ data={"label": "CR 1", "data": {"test": "value test"}}
+ )
+ imp = ImporterType.objects.get(slug="ishtar-context-record")
+ col_number = imp.columns.order_by("-col_number").values_list(
+ "col_number", flat=True
+ )[0] + 1
+ col = ImporterColumn.objects.create(
+ col_number=col_number, label="Json value", importer_type=imp
+ )
+ ImportTarget.objects.create(
+ column=col, target="data__test",
+ formater_type=FormaterType.objects.get(
+ formater_type="UnicodeFormater", options="")
+ )
+
+ json_field = JsonDataField.objects.create(
+ name="test", key="test",
+ content_type=ContentType.objects.get_for_model(models.ContextRecord)
+ )
+ cf = CustomForm.objects.create(
+ name="Contect record search form",
+ form="contextrecord-001-search",
+ apply_to_all=True
+ )
+ CustomFormJsonField.objects.create(json_field=json_field, custom_form=cf,
+ order=200)
+
+ c = Client()
+
+ url = reverse(
+ "get-by-importer", kwargs={"slug": "ishtar-context-record", "type": "csv"}
+ )
+ get_args = {"search_vector": 'test="value test"'}
+ response = c.get(url, get_args)
+ # no result when no authentication
+ self.assertTrue(not response.content)
+ c.login(username=self.username, password=self.password)
+ response = c.get(url, get_args)
+ ENCODING = settings.ENCODING or "utf-8"
+ rows = list(csv.reader(StringIO(response.content.decode(ENCODING))))
+ # one header + one context record
+ self.assertEqual(len(rows), 2)
+ row_cr = rows[1]
+ self.assertEqual(row_cr[-1], "value test")
+
class ContextRecordTest(ContextRecordInit, TestCase):
fixtures = CONTEXT_RECORD_TOWNS_FIXTURES