diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-03-01 15:25:28 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2023-03-01 15:39:14 +0100 |
commit | 86864474095ebac0993b2f7f7e07fdd1f31b28b6 (patch) | |
tree | efa4e1a2104a1d81dbda0e437d52b40a19429bba | |
parent | 5e60dee2915902be21cf2bd22df00f8256e2bca3 (diff) | |
download | Ishtar-86864474095ebac0993b2f7f7e07fdd1f31b28b6.tar.bz2 Ishtar-86864474095ebac0993b2f7f7e07fdd1f31b28b6.zip |
Free text search: use accent and unaccented string (refs #5352)
-rw-r--r-- | CHANGES.md | 4 | ||||
-rw-r--r-- | archaeological_finds/tests.py | 5 | ||||
-rw-r--r-- | 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 |