summaryrefslogtreecommitdiff
path: root/archaeological_finds
diff options
context:
space:
mode:
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
commite7165c5915d5ecddf1248f0cbfb03e5efccd45a7 (patch)
treeb6ea35231e2ee8406be9e6ee7b930b5180655c6b /archaeological_finds
parentdf84c1f2b6d7bf469e2a914e43a2f268c90cdd23 (diff)
downloadIshtar-e7165c5915d5ecddf1248f0cbfb03e5efccd45a7.tar.bz2
Ishtar-e7165c5915d5ecddf1248f0cbfb03e5efccd45a7.zip
Search: manage complex queries - Find search: loan status
Diffstat (limited to 'archaeological_finds')
-rw-r--r--archaeological_finds/forms.py1
-rw-r--r--archaeological_finds/models_finds.py22
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",