summaryrefslogtreecommitdiff
path: root/ishtar_common/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2018-08-10 18:32:41 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2018-08-13 18:26:04 +0200
commit902adc1bb676727e680cb5eddf61e9463c6ce1c9 (patch)
tree23bebab49815c9aa69646fc12b3414441fe49b86 /ishtar_common/models.py
parent6fd955966b18bb138219eae151dec3b29f2685ee (diff)
downloadIshtar-902adc1bb676727e680cb5eddf61e9463c6ce1c9.tar.bz2
Ishtar-902adc1bb676727e680cb5eddf61e9463c6ce1c9.zip
Person, organization, account search configuration
Diffstat (limited to 'ishtar_common/models.py')
-rw-r--r--ishtar_common/models.py94
1 files changed, 77 insertions, 17 deletions
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index c43dca279..e16c4a360 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -52,7 +52,7 @@ from django.db.utils import DatabaseError
from django.template.defaultfilters import slugify
from django.utils.functional import lazy
from django.utils.safestring import SafeUnicode, mark_safe
-from django.utils.translation import ugettext_lazy as _, ugettext
+from django.utils.translation import ugettext_lazy as _, ugettext, pgettext_lazy
from secretary import Renderer as SecretaryRenderer
from simple_history.models import HistoricalRecords as BaseHistoricalRecords
from unidecode import unidecode
@@ -64,7 +64,7 @@ from ishtar_common.models_imports import ImporterModel, ImporterType, \
Import, TargetKeyGroup
from ishtar_common.utils import get_cache, disable_for_loaddata, create_slug, \
get_all_field_names, merge_tsvectors, cached_label_changed, \
- generate_relation_graph
+ generate_relation_graph, TXT_SEARCH_COMMENT
__all__ = [
'ImporterModel', 'ImporterType', 'ImporterDefault', 'ImporterDefaultValues',
@@ -2513,12 +2513,23 @@ class Organization(Address, Merge, OwnPerms, ValueGetter):
SHOW_URL = 'show-organization'
# search parameters
- EXTRA_REQUEST_KEYS = {
- 'name': 'name__icontains',
- 'organization_type': 'organization_type__pk__in',
- }
+ EXTRA_REQUEST_KEYS = {}
BASE_SEARCH_VECTORS = ['name', 'town']
+ # alternative names of fields for searches
+ ALT_NAMES = {
+ 'name': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"name"),
+ 'name__icontains'
+ ),
+ 'organization_type': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"type"),
+ 'organization_type__label__iexact'
+ ),
+ }
+ for v in ALT_NAMES.values():
+ EXTRA_REQUEST_KEYS[v[0]] = v[1]
+
# fields
name = models.CharField(_(u"Name"), max_length=500)
organization_type = models.ForeignKey(OrganizationType,
@@ -2626,17 +2637,43 @@ class Person(Address, Merge, OwnPerms, ValueGetter):
# search parameters
REVERSED_BOOL_FIELDS = ['ishtaruser__isnull']
EXTRA_REQUEST_KEYS = {
- 'name': ['name__icontains', 'raw_name__icontains'],
- 'surname': ['surname__icontains', 'raw_name__icontains'],
- 'attached_to': 'attached_to__pk',
'attached_to__name': 'attached_to__name',
- 'person_types': 'person_types__pk__in',
'ishtaruser__isnull': 'ishtaruser__isnull',
}
COL_LABELS = {
'attached_to__name': _(u"Organization")
}
+ # alternative names of fields for searches
+ ALT_NAMES = {
+ 'name': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"name"),
+ 'name__icontains'
+ ),
+ 'surname': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"surname"),
+ 'surname__icontains'
+ ),
+ 'email': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"email"),
+ 'email__icontains'
+ ),
+ 'person_types': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"type"),
+ 'person_types__label__iexact'
+ ),
+ 'attached_to': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"organization"),
+ 'attached_to__cached_label__iexact'
+ ),
+ 'ishtaruser__isnull': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"has-account"),
+ 'ishtaruser__isnull'
+ ),
+ }
+ for v in ALT_NAMES.values():
+ EXTRA_REQUEST_KEYS[v[0]] = v[1]
+
# fields
old_title = models.CharField(_(u"Title"), max_length=100, choices=TYPE,
blank=True, null=True)
@@ -2971,16 +3008,39 @@ class IshtarUser(FullSearch):
# search parameters
EXTRA_REQUEST_KEYS = {
- 'username': ['username__icontains'],
- 'name': ['person__name__icontains', 'person__raw_name__icontains'],
- 'surname': ['person__surname__icontains',
- 'person__raw_name__icontains'],
- 'email': ['person__email'],
- 'attached_to': 'person__attached_to__pk',
- 'person_types': 'person__person_types__pk__in',
'person__person_types_list': 'person__person_types__name'
}
+ # alternative names of fields for searches
+ ALT_NAMES = {
+ 'username': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"username"),
+ 'user_ptr__username__icontains'
+ ),
+ 'name': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"name"),
+ 'person__name__icontains'
+ ),
+ 'surname': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"surname"),
+ 'person__surname__icontains'
+ ),
+ 'email': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"email"),
+ 'person__email__icontains'
+ ),
+ 'person_types': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"type"),
+ 'person__person_types__label__iexact'
+ ),
+ 'attached_to': (
+ pgettext_lazy(TXT_SEARCH_COMMENT, u"organization"),
+ 'person__attached_to__cached_label__iexact'
+ ),
+ }
+ for v in ALT_NAMES.values():
+ EXTRA_REQUEST_KEYS[v[0]] = v[1]
+
# fields
user_ptr = models.OneToOneField(User, primary_key=True,
related_name='ishtaruser')