summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-09-02 08:38:11 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2020-09-02 08:38:11 +0200
commit51fae791921012870ec90ca3fd8cb850105fac51 (patch)
treeeff63a9fcd55836d7c19ca2261a012482061758b
parentc5472f540dcfea307452ec078dd3ee833c7d86fe (diff)
downloadIshtar-51fae791921012870ec90ca3fd8cb850105fac51.tar.bz2
Ishtar-51fae791921012870ec90ca3fd8cb850105fac51.zip
Search - criteria: "has finds" for operation and context record search
-rw-r--r--archaeological_context_records/forms.py1
-rw-r--r--archaeological_context_records/models.py5
-rw-r--r--archaeological_operations/forms.py1
-rw-r--r--archaeological_operations/models.py5
-rw-r--r--ishtar_common/views_item.py2
5 files changed, 13 insertions, 1 deletions
diff --git a/archaeological_context_records/forms.py b/archaeological_context_records/forms.py
index 91c2fdf63..19df6aecc 100644
--- a/archaeological_context_records/forms.py
+++ b/archaeological_context_records/forms.py
@@ -133,6 +133,7 @@ class RecordSelect(DocumentItemSelect, PeriodSelect):
label=_(u"Search within related operations"), choices=[])
unit = forms.ChoiceField(label=_(u"Unit type"), choices=[])
parcel = forms.CharField(label=_(u"Parcel"))
+ has_finds = forms.NullBooleanField(label=_("Has finds"))
cr_relation_types = forms.ChoiceField(
label=_(u"Search within relations"), choices=[])
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py
index 84e2b3542..5e08ce6ae 100644
--- a/archaeological_context_records/models.py
+++ b/archaeological_context_records/models.py
@@ -400,6 +400,7 @@ class ContextRecord(BulkUpdatedItem, DocumentItem, BaseHistorizedItem,
'operation_id': 'operation_id',
'unit__label': "unit__label"
}
+ MANY_COUNTED_FIELDS = ['base_finds']
REVERSED_BOOL_FIELDS = [
'documents__image__isnull',
'documents__associated_file__isnull',
@@ -453,6 +454,10 @@ class ContextRecord(BulkUpdatedItem, DocumentItem, BaseHistorizedItem,
pgettext_lazy("key for text search", "parcel"),
'parcel__cached_label__iexact'
),
+ 'has_finds': SearchAltName(
+ pgettext_lazy("key for text search", "has-finds"),
+ 'base_finds'
+ ),
'cr_relation_types': SearchAltName(
pgettext_lazy("key for text search", "record-relation-type"),
'cr_relation_types'
diff --git a/archaeological_operations/forms.py b/archaeological_operations/forms.py
index 02f5ec326..8613822e1 100644
--- a/archaeological_operations/forms.py
+++ b/archaeological_operations/forms.py
@@ -566,6 +566,7 @@ class OperationSelect(DocumentItemSelect):
label=_(u"Documentation deadline before"))
documentation_deadline_after = DateField(
label=_(u"Documentation deadline after"))
+ has_finds = forms.NullBooleanField(label=_("Has finds"))
finds_received = forms.NullBooleanField(
label=_(u"Finds received"))
finds_deadline_before = DateField(
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py
index a74ab7d51..db63088e5 100644
--- a/archaeological_operations/models.py
+++ b/archaeological_operations/models.py
@@ -700,6 +700,7 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, QRCodeItem,
# search parameters
BOOL_FIELDS = ['end_date__isnull', 'virtual_operation',
'documentation_received', 'finds_received']
+ MANY_COUNTED_FIELDS = ['context_record__base_finds']
REVERSED_BOOL_FIELDS = [
'documents__image__isnull',
'documents__associated_file__isnull',
@@ -948,6 +949,10 @@ class Operation(ClosedItem, DocumentItem, BaseHistorizedItem, QRCodeItem,
pgettext_lazy("key for text search", "finds-received"),
'finds_received'
),
+ 'has_finds': SearchAltName(
+ pgettext_lazy("key for text search", "has-finds"),
+ 'context_record__base_finds'
+ ),
'finds_deadline_before': SearchAltName(
pgettext_lazy("key for text search", "finds-deadline-before"),
'finds_deadline__lte'
diff --git a/ishtar_common/views_item.py b/ishtar_common/views_item.py
index 5c6b2b3c5..15c1351b6 100644
--- a/ishtar_common/views_item.py
+++ b/ishtar_common/views_item.py
@@ -750,7 +750,7 @@ def _manage_many_counted_fields(fields, reversed_fields, dct, excluded_dct):
dct[k] = True
else:
dct[k] = None
- if k in reversed_fields:
+ if reversed_fields and k in reversed_fields:
dct[k] = True if not dct[k] else None
if dct[k]:
dct.pop(k)