From 0877e379db9bb67d1e349ba46c8da555a6124390 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Wed, 1 Mar 2023 15:25:28 +0100 Subject: Free text search: use accent and unaccented string (refs #5352) --- CHANGES.md | 4 +++- archaeological_finds/tests.py | 5 +++++ ishtar_common/views_item.py | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/CHANGES.md b/CHANGES.md index a1e49befd..630c90926 100644 --- a/CHANGES.md +++ b/CHANGES.md @@ -19,7 +19,9 @@ Ishtar changelog - overload index to add subsection headers - Geo: create/edit form - new openlayers version - add default IGN tiles - Import: improve bad encoding detection -- Free text search: add french_archeo thesaurus config +- Free text search: + - use accent and unaccented string + - add french_archeo thesaurus config ### Bug fixes ### - Search: Fix many excluded search diff --git a/archaeological_finds/tests.py b/archaeological_finds/tests.py index 342f3d127..1a62dce4b 100644 --- a/archaeological_finds/tests.py +++ b/archaeological_finds/tests.py @@ -1222,6 +1222,7 @@ class FindSearchTest(FindInit, TestCase, SearchText): metal = models.MaterialType.objects.get(txt_idx="metal") iron_metal = models.MaterialType.objects.get(txt_idx="iron_metal") not_iron_metal = models.MaterialType.objects.get(txt_idx="not_iron_metal") + mineral = models.MaterialType.objects.get(txt_idx="mineral").pk find.material_types.add(iron_metal) find = models.Find.objects.get(pk=find.pk) find.save() @@ -1256,12 +1257,16 @@ class FindSearchTest(FindInit, TestCase, SearchText): content = response.content.decode() self.assertEqual(json.loads(content)["recordsTotal"], 1) + find.material_types.add(mineral) + find = models.Find.objects.get(pk=find.pk) + find.save() # test on text search material_key = str(pgettext_lazy("key for text search", "material")) result = [ ('{}="{}"'.format(material_key, str(iron_metal)), 1), ('{}="{}"'.format(material_key, str(not_iron_metal)), 0), ('{}="{}"'.format(material_key, str(metal)), 1), + ('minéral', 1), ] self._test_search(c, result, context="Text material search") diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py index eaf05f027..615abd0ec 100644 --- a/ishtar_common/views_item.py +++ b/ishtar_common/views_item.py @@ -803,7 +803,9 @@ def _parse_parentheses_groups( query += ")" if query == "()": query = "" - query = unidecode(query) + unaccent_query = unidecode(query) + if unaccent_query != query: + query = f"({query} | {unaccent_query})" return query, current_dct, exc_dct, extra_distinct_q -- cgit v1.2.3