diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-12-03 00:00:34 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2018-12-03 00:00:34 +0100 |
commit | 4d701751d0eba67cceb6e9f435e03f7142b1f8fc (patch) | |
tree | b6ea35231e2ee8406be9e6ee7b930b5180655c6b /archaeological_finds | |
parent | 315c877745b604bc4d36c56be5efe6b9f072ab8e (diff) | |
download | Ishtar-4d701751d0eba67cceb6e9f435e03f7142b1f8fc.tar.bz2 Ishtar-4d701751d0eba67cceb6e9f435e03f7142b1f8fc.zip |
Search: manage complex queries - Find search: loan status
Diffstat (limited to 'archaeological_finds')
-rw-r--r-- | archaeological_finds/forms.py | 1 | ||||
-rw-r--r-- | archaeological_finds/models_finds.py | 22 |
2 files changed, 22 insertions, 1 deletions
diff --git a/archaeological_finds/forms.py b/archaeological_finds/forms.py index e42259bad..3019d4aa2 100644 --- a/archaeological_finds/forms.py +++ b/archaeological_finds/forms.py @@ -883,6 +883,7 @@ class FindSelect(HistorySelect): base_finds__batch = forms.ChoiceField( label=_(u"Batch/object"), choices=[]) checked_type = forms.ChoiceField(label=_("Check")) + loan = forms.NullBooleanField(label=_(u"Loan?")) documents__image__isnull = forms.NullBooleanField(label=_(u"Has an image?")) TYPES = [ diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py index ee6253109..08fb15f0e 100644 --- a/archaeological_finds/models_finds.py +++ b/archaeological_finds/models_finds.py @@ -23,7 +23,7 @@ from django.conf import settings from django.contrib.gis.db import models from django.core.urlresolvers import reverse from django.db import connection -from django.db.models import Max, Q +from django.db.models import Max, Q, F from django.db.models.signals import m2m_changed, post_save, post_delete, \ pre_delete from django.core.exceptions import ObjectDoesNotExist @@ -668,6 +668,20 @@ class FBulkView(object): """ +def query_loan(is_true=True): + """ + Query to get loan find + + :return: (filter, exclude, extra) + """ + if is_true: + return Q(container_ref__isnull=False, container__isnull=False), \ + Q(container_ref=F('container')), None + else: + return Q(container_ref__isnull=False, container__isnull=False, + container_ref=F('container')), None, None + + class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms, MainItem): EXTERNAL_ID_KEY = 'find_external_id' @@ -954,6 +968,10 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms, pgettext_lazy("key for text search", u"created-by"), 'history_creator__ishtaruser__person__cached_label__iexact' ), + 'loan': ( + pgettext_lazy("key for text search", u"loan"), + query_loan + ) } for v in ALT_NAMES.values(): for language_code, language_lbl in settings.LANGUAGES: @@ -961,6 +979,8 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms, EXTRA_REQUEST_KEYS[unicode(v[0])] = v[1] deactivate() + EXTRA_REQUEST_FUNC = {""} + PARENT_SEARCH_VECTORS = ['base_finds'] BASE_SEARCH_VECTORS = [ "cached_label", "label", "description", "container__location__name", |