diff options
Diffstat (limited to 'archaeological_finds/models_finds.py')
-rw-r--r-- | archaeological_finds/models_finds.py | 20 |
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")) |