summaryrefslogtreecommitdiff
path: root/archaeological_finds/models_finds.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r--archaeological_finds/models_finds.py20
1 files changed, 18 insertions, 2 deletions
diff --git a/archaeological_finds/models_finds.py b/archaeological_finds/models_finds.py
index 33ec2df0b..c7aec5dee 100644
--- a/archaeological_finds/models_finds.py
+++ b/archaeological_finds/models_finds.py
@@ -31,7 +31,8 @@ from django.utils.translation import ugettext_lazy as _, pgettext_lazy, \
activate, deactivate
from ishtar_common.data_importer import post_importer_action, ImporterError
-from ishtar_common.utils import cached_label_changed, post_save_point
+from ishtar_common.utils import cached_label_changed, post_save_point, \
+ m2m_historization_changed
from ishtar_common.alternative_configs import ALTERNATE_CONFIGS
@@ -1044,6 +1045,10 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,
('warehouse', 'container__location__pk'),
('site', 'base_finds__context_record__archaeological_site__pk')
]
+ HISTORICAL_M2M = [
+ 'material_types', 'datings', 'object_types', 'integrities',
+ 'remarkabilities', 'communicabilities',
+ ]
objects = ExternalIdManager()
# fields
@@ -1069,6 +1074,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,
MaterialType, verbose_name=_(u"Material types"), related_name='finds',
blank=True
)
+ historical_material_types = models.TextField(blank=True, null=True)
material_type_quality = models.ForeignKey(
MaterialTypeQualityType,
verbose_name=_(u"Material type quality"), related_name='finds',
@@ -1088,6 +1094,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,
verbose_name=_(u"Downstream treatment"), on_delete=models.SET_NULL)
datings = models.ManyToManyField(Dating, verbose_name=_(u"Dating"),
related_name='find')
+ historical_datings = models.TextField(blank=True, null=True)
container = models.ForeignKey(
"archaeological_warehouse.Container", verbose_name=_(u"Container"),
blank=True, null=True,
@@ -1103,6 +1110,7 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,
ObjectType, verbose_name=_(u"Object types"), related_name='find',
blank=True
)
+ historical_object_types = models.TextField(blank=True, null=True)
object_type_quality = models.ForeignKey(
ObjectTypeQualityType,
verbose_name=_(u"Object type quality"), related_name='finds',
@@ -1111,12 +1119,15 @@ class Find(BulkUpdatedItem, ValueGetter, BaseHistorizedItem, OwnPerms,
integrities = models.ManyToManyField(
IntegrityType, verbose_name=_(u"Integrity / interest"),
related_name='find', blank=True)
+ historical_integrities = models.TextField(blank=True, null=True)
remarkabilities = models.ManyToManyField(
RemarkabilityType, verbose_name=_(u"Remarkability"),
related_name='find', blank=True)
+ historical_remarkabilities = models.TextField(blank=True, null=True)
communicabilities = models.ManyToManyField(
CommunicabilityType, verbose_name=_(u"Communicability"),
related_name='find', blank=True)
+ historical_communicabilities = models.TextField(blank=True, null=True)
min_number_of_individuals = models.IntegerField(
_(u"Minimum number of individuals (MNI)"), blank=True, null=True)
length = models.FloatField(_(u"Length (cm)"), blank=True, null=True)
@@ -1951,7 +1962,8 @@ def base_find_find_changed(sender, **kwargs):
obj = kwargs.get('instance', None)
if not obj:
return
- # recalculate complete id and external id
+ obj.skip_history_when_saving = True
+ # recalculate cached_label, complete id and external id
obj.save()
@@ -1960,6 +1972,10 @@ m2m_changed.connect(base_find_find_changed, sender=Find.base_finds.through)
m2m_changed.connect(document_attached_changed,
sender=Find.documents.through)
+for attr in Find.HISTORICAL_M2M:
+ m2m_changed.connect(m2m_historization_changed,
+ sender=getattr(Find, attr).through)
+
class Property(LightHistorizedItem):
find = models.ForeignKey(Find, verbose_name=_(u"Find"))