summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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
commit0877e379db9bb67d1e349ba46c8da555a6124390 (patch)
treeefa4e1a2104a1d81dbda0e437d52b40a19429bba
parent1924bd4b1286d8dbd761be0a7824a161ccaa99fd (diff)
downloadIshtar-0877e379db9bb67d1e349ba46c8da555a6124390.tar.bz2
Ishtar-0877e379db9bb67d1e349ba46c8da555a6124390.zip
Free text search: use accent and unaccented string (refs #5352)
-rw-r--r--CHANGES.md4
-rw-r--r--archaeological_finds/tests.py5
-rw-r--r--ishtar_common/views_item.py4
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