summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ishtar_common/forms_common.py12
-rw-r--r--ishtar_common/models.py94
2 files changed, 86 insertions, 20 deletions
diff --git a/ishtar_common/forms_common.py b/ishtar_common/forms_common.py
index ec6f7bc96..e6f37a794 100644
--- a/ishtar_common/forms_common.py
+++ b/ishtar_common/forms_common.py
@@ -337,7 +337,9 @@ class OrganizationForm(ManageOldType, NewItemForm):
return new_item
-class OrganizationSelect(TableSelect):
+class OrganizationSelect(TableSelect): # OK
+ _model = models.Organization
+
search_vector = forms.CharField(
label=_(u"Full text search"), widget=widgets.SearchWidget(
'ishtar-common', 'organization'
@@ -454,7 +456,9 @@ class BaseOrganizationForm(forms.ModelForm):
'town', 'postal_code']
-class PersonSelect(TableSelect):
+class PersonSelect(TableSelect): # OK
+ _model = models.Person
+
search_vector = forms.CharField(
label=_(u"Full text search"), widget=widgets.SearchWidget(
'ishtar-common', 'person'
@@ -585,7 +589,9 @@ class PersonUserFormSelection(PersonFormSelection):
validators=[models.valid_id(models.Person)])
-class IshtarUserSelect(TableSelect):
+class IshtarUserSelect(TableSelect): # OK
+ _model = models.IshtarUser
+
search_vector = forms.CharField(
label=_(u"Full text search"), widget=widgets.SearchWidget(
'ishtar-common', 'ishtaruser'
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')