diff options
-rw-r--r-- | ishtar_common/forms_common.py | 12 | ||||
-rw-r--r-- | ishtar_common/models.py | 94 |
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') |