summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_warehouse/models.py')
-rw-r--r--archaeological_warehouse/models.py53
1 files changed, 51 insertions, 2 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index 64a766cea..63d4497ac 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -20,7 +20,6 @@
import datetime
import uuid
-from django.conf import settings
from django.contrib.gis.db import models
from django.contrib.postgres.indexes import GinIndex
from django.core.urlresolvers import reverse
@@ -66,6 +65,7 @@ class Warehouse(Address, DocumentItem, GeoItem, QRCodeItem, DashboardFormItem,
SearchVectorConfig("warehouse_type__label"),
SearchVectorConfig("external_id"),
SearchVectorConfig("town"),
+ SearchVectorConfig("precise_town__name"),
SearchVectorConfig("comment", "local"),
]
@@ -84,6 +84,11 @@ class Warehouse(Address, DocumentItem, GeoItem, QRCodeItem, DashboardFormItem,
pgettext_lazy("key for text search", "type"),
'warehouse_type__label__iexact'
),
+ 'town':
+ SearchAltName(
+ pgettext_lazy("key for text search", "town"),
+ 'precise_town__cached_label__iexact'
+ ),
}
GEO_LABEL = "name"
DOWN_MODEL_UPDATE = ["containers"]
@@ -497,6 +502,18 @@ class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem,
pgettext_lazy("key for text search", "comment"),
'comment__iexact'
),
+ 'operation_town':
+ SearchAltName(
+ pgettext_lazy("key for text search", "operation-town"),
+ 'finds__base_finds__context_record__operation__'
+ 'towns__cached_label__iexact'
+ ),
+ 'operation_scientist':
+ SearchAltName(
+ pgettext_lazy("key for text search", "operation-scientist"),
+ 'finds__base_finds__context_record__operation__'
+ 'scientist__cached_label__iexact'
+ ),
'code_patriarche':
SearchAltName(
pgettext_lazy("key for text search", "code-patriarche"),
@@ -528,6 +545,14 @@ class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem,
SearchAltName(
pgettext_lazy("key for text search", "context-record"),
'finds__base_finds__context_record__cached_label__icontains'),
+ 'find_label':
+ SearchAltName(
+ pgettext_lazy("key for text search", "find-label"),
+ 'finds__label__icontains'),
+ 'find_denomination':
+ SearchAltName(
+ pgettext_lazy("key for text search", "find-denomination"),
+ 'finds__denomination__icontains'),
'material_types':
SearchAltName(
pgettext_lazy("key for text search", "material"),
@@ -578,9 +603,15 @@ class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem,
),
}
+ REVERSED_BOOL_FIELDS = [
+ 'documents__image__isnull',
+ 'documents__associated_file__isnull',
+ 'documents__associated_url__isnull',
+ ]
REVERSED_MANY_COUNTED_FIELDS = ['finds', 'finds_ref']
ALT_NAMES.update(LightHistorizedItem.ALT_NAMES)
+ ALT_NAMES.update(DocumentItem.ALT_NAMES)
DYNAMIC_REQUESTS = {
'division': DynamicRequest(
@@ -909,7 +940,25 @@ class Container(DocumentItem, LightHistorizedItem, QRCodeItem, GeoItem,
loca.delete()
-post_save.connect(cached_label_and_geo_changed, sender=Container)
+def container_post_save(sender, **kwargs):
+ cached_label_and_geo_changed(sender=sender, **kwargs)
+ if not kwargs.get('instance'):
+ return
+ instance = kwargs.get('instance')
+ for loca in ContainerLocalisation.objects.filter(
+ container=instance).exclude(
+ division__warehouse=instance.location).all():
+ q = WarehouseDivisionLink.objects.filter(
+ warehouse=instance.location,
+ division=loca.division.division
+ )
+ if not q.count():
+ continue
+ loca.division = q.all()[0]
+ loca.save()
+
+
+post_save.connect(container_post_save, sender=Container)
m2m_changed.connect(document_attached_changed,
sender=Container.documents.through)