diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2020-12-29 12:09:08 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:23 +0100 |
commit | 752d3d8eda5cd968faf0d370ae2d781575c60d90 (patch) | |
tree | 6f28b883d2ab3d8d94c0774134ce3d8d703ff277 /ishtar_common | |
parent | ff8cf8f853914a847609c05c973e5ac199e30c6b (diff) | |
download | Ishtar-752d3d8eda5cd968faf0d370ae2d781575c60d90.tar.bz2 Ishtar-752d3d8eda5cd968faf0d370ae2d781575c60d90.zip |
Unaccent search for person/orga. Tips for operation form
Diffstat (limited to 'ishtar_common')
-rw-r--r-- | ishtar_common/migrations/0208_unaccent.py | 17 | ||||
-rw-r--r-- | ishtar_common/models.py | 8 | ||||
-rw-r--r-- | ishtar_common/views.py | 16 |
3 files changed, 34 insertions, 7 deletions
diff --git a/ishtar_common/migrations/0208_unaccent.py b/ishtar_common/migrations/0208_unaccent.py new file mode 100644 index 000000000..57aa9ea9e --- /dev/null +++ b/ishtar_common/migrations/0208_unaccent.py @@ -0,0 +1,17 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.27 on 2020-12-29 11:50 +from __future__ import unicode_literals + +from django.db import migrations + +from django.contrib.postgres.operations import UnaccentExtension + +class Migration(migrations.Migration): + + dependencies = [ + ('ishtar_common', '0207_auto_20201207_2337'), + ] + + operations = [ + UnaccentExtension() + ] diff --git a/ishtar_common/models.py b/ishtar_common/models.py index c178b187f..807bbc64f 100644 --- a/ishtar_common/models.py +++ b/ishtar_common/models.py @@ -1862,6 +1862,14 @@ def get_publisher_label(): return _("Error: publisher type is missing") +def get_operator_label(): + if apps.ready: + lbl = get_general_type_label(OrganizationType, "operator") + if lbl: + return lbl + return _("Error: operator type is missing") + + class TitleType(GenderedType): long_title = models.TextField(_("Long title"), default="", blank=True) diff --git a/ishtar_common/views.py b/ishtar_common/views.py index e445cb44d..d5b38ebed 100644 --- a/ishtar_common/views.py +++ b/ishtar_common/views.py @@ -613,9 +613,9 @@ def autocomplete_ishtaruser(request): return HttpResponseBadRequest() query = Q() for q in q.split(' '): - qu = (Q(person__name__icontains=q) | - Q(person__surname__icontains=q) | - Q(person__raw_name__icontains=q)) + qu = (Q(person__name__unaccent__icontains=q) | + Q(person__surname__unaccent__icontains=q) | + Q(person__raw_name__unaccent__icontains=q)) query = query & qu users = models.IshtarUser.objects.filter(query).distinct()[:limit] data = json.dumps([ @@ -643,10 +643,12 @@ def autocomplete_person(request, person_types=None, attached_to=None, return HttpResponseBadRequest() query = Q() for q in q.split(' '): - qu = (Q(name__icontains=q) | Q(surname__icontains=q) | - Q(email__icontains=q) | Q(attached_to__name__icontains=q)) + qu = (Q(name__unaccent__icontains=q) | + Q(surname__unaccent__icontains=q) | + Q(email__unaccent__icontains=q) | + Q(attached_to__name__unaccent__icontains=q)) if permissive: - qu = qu | Q(raw_name__icontains=q) + qu = qu | Q(raw_name__unaccent__icontains=q) query = query & qu if attached_to: query = query & Q(attached_to__pk__in=attached_to.split('_')) @@ -780,7 +782,7 @@ def autocomplete_organization(request, orga_type=None): q = request.GET.get('term') query = Q() for q in q.split(' '): - extra = Q(cached_label__icontains=q) + extra = Q(cached_label__unaccent__icontains=q) query = query & extra if orga_type: try: |