diff options
Diffstat (limited to 'archaeological_finds')
-rw-r--r-- | archaeological_finds/migrations/0055_auto_20181227_1643.py | 75 | ||||
-rw-r--r-- | archaeological_finds/models_finds.py | 20 | ||||
-rw-r--r-- | archaeological_finds/templates/ishtar/sheet_find.html | 2 |
3 files changed, 94 insertions, 3 deletions
diff --git a/archaeological_finds/migrations/0055_auto_20181227_1643.py b/archaeological_finds/migrations/0055_auto_20181227_1643.py new file mode 100644 index 000000000..094fbaf12 --- /dev/null +++ b/archaeological_finds/migrations/0055_auto_20181227_1643.py @@ -0,0 +1,75 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.10 on 2018-12-27 16:43 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('archaeological_finds', '0054_migrate_main_image'), + ] + + operations = [ + migrations.AddField( + model_name='find', + name='historical_communicabilities', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='find', + name='historical_datings', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='find', + name='historical_integrities', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='find', + name='historical_material_types', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='find', + name='historical_object_types', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='find', + name='historical_remarkabilities', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='historicalfind', + name='historical_communicabilities', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='historicalfind', + name='historical_datings', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='historicalfind', + name='historical_integrities', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='historicalfind', + name='historical_material_types', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='historicalfind', + name='historical_object_types', + field=models.TextField(blank=True, null=True), + ), + migrations.AddField( + model_name='historicalfind', + name='historical_remarkabilities', + field=models.TextField(blank=True, null=True), + ), + ] 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")) diff --git a/archaeological_finds/templates/ishtar/sheet_find.html b/archaeological_finds/templates/ishtar/sheet_find.html index cfbefa306..1ff5e21f4 100644 --- a/archaeological_finds/templates/ishtar/sheet_find.html +++ b/archaeological_finds/templates/ishtar/sheet_find.html @@ -140,7 +140,7 @@ <div class='row'> {% field_flex_full "Description" item.description "<pre>" "</pre>" %} {% field_flex "Is complete?" item.is_complete %} - {% field_flex_multiple "Material types" item.material_types %} + {% field_flex_multiple_obj "Material types" item 'material_types' %} {% field_flex "Material type quality" item.material_type_quality %} {% field_flex_multiple "Object types" item.object_types %} {% field_flex "Object type quality" item.object_type_quality %} |