summaryrefslogtreecommitdiff
path: root/ishtar_common
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-02-20 16:20:31 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-02-20 16:20:31 +0100
commit4c18c16a2a13026ce2e90c5d35bb5b02987ec980 (patch)
tree59e6ee0433f382077412881957ab84a3d8278467 /ishtar_common
parentcc4b9d92baf57f29ff57fec6f9fdda3d6d4602e0 (diff)
downloadIshtar-4c18c16a2a13026ce2e90c5d35bb5b02987ec980.tar.bz2
Ishtar-4c18c16a2a13026ce2e90c5d35bb5b02987ec980.zip
Fix unaccented search in search vector (refs #3152)
Diffstat (limited to 'ishtar_common')
-rw-r--r--ishtar_common/models.py7
-rw-r--r--ishtar_common/views.py17
2 files changed, 18 insertions, 6 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index 201cf7c21..e33fb73e4 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -34,6 +34,7 @@ import shutil
from subprocess import Popen, PIPE
import tempfile
import time
+from unidecode import unidecode
from django.conf import settings
from django.contrib.postgres.fields import JSONField
@@ -1093,7 +1094,11 @@ class FullSearch(models.Model):
*self.BASE_SEARCH_VECTORS,
config=settings.ISHTAR_SEARCH_LANGUAGE
)).values('search')
- search_vectors.append(q.all()[0]['search'])
+ search_vectors.append(
+ unidecode(
+ q.all()[0]['search'].decode('utf-8')
+ )
+ )
self.search_vector = merge_tsvectors(search_vectors)
changed = old_search != self.search_vector
if save and changed:
diff --git a/ishtar_common/views.py b/ishtar_common/views.py
index 8db0e9460..bd558a62e 100644
--- a/ishtar_common/views.py
+++ b/ishtar_common/views.py
@@ -17,8 +17,6 @@
# See the file COPYING for details.
-from tidylib import tidy_document as tidy
-
from copy import copy, deepcopy
import csv
import datetime
@@ -28,7 +26,9 @@ from markdown import markdown
import optparse
import re
from tempfile import NamedTemporaryFile
+from tidylib import tidy_document as tidy
import unicodedata
+from unidecode import unidecode
from weasyprint import HTML, CSS
from weasyprint.fonts import FontConfiguration
@@ -631,6 +631,15 @@ def _get_values(request, val):
return new_vals
+def _search_manage_search_vector(dct):
+ if 'search_vector' in dct:
+ dct['search_vector'] = SearchQuery(
+ unidecode(dct['search_vector']),
+ config=settings.ISHTAR_SEARCH_LANGUAGE
+ )
+ return dct
+
+
DEFAULT_ROW_NUMBER = 10
# length is used by ajax DataTables requests
EXCLUDED_FIELDS = ['length']
@@ -899,9 +908,7 @@ def get_item(model, func_name, default_name, extra_request_keys=[],
reqs |= q
and_reqs.append(reqs)
break
- if 'search_vector' in dct:
- dct['search_vector'] = SearchQuery(
- dct['search_vector'], config=settings.ISHTAR_SEARCH_LANGUAGE)
+ dct = _search_manage_search_vector(dct)
query = Q(**dct)
for k, or_req in or_reqs:
alt_dct = dct.copy()