diff options
Diffstat (limited to 'archaeological_context_records/models.py')
-rw-r--r-- | archaeological_context_records/models.py | 34 |
1 files changed, 26 insertions, 8 deletions
diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 89499463a..f2a802fbe 100644 --- a/archaeological_context_records/models.py +++ b/archaeological_context_records/models.py @@ -26,7 +26,7 @@ from django.utils.translation import ugettext_lazy as _, ugettext, pgettext from ishtar_common.models import GeneralType, BaseHistorizedItem, \ HistoricalRecords, OwnPerms, ShortMenuItem, Source, GeneralRelationType,\ - GeneralRecordRelations, post_delete_record_relation + GeneralRecordRelations, post_delete_record_relation, get_external_id from archaeological_operations.models import Operation, Period, Parcel @@ -120,8 +120,9 @@ class ContextRecord(BaseHistorizedItem, OwnPerms, ShortMenuItem): 'related_context_records': 'detailled_related_context_records' } } - external_id = models.CharField(_(u"External ID"), blank=True, null=True, - max_length=120) + external_id = models.TextField(_(u"External ID"), blank=True, null=True) + auto_external_id = models.BooleanField( + _(u"External ID is set automatically"), default=False) parcel = models.ForeignKey(Parcel, verbose_name=_(u"Parcel"), related_name='context_record') operation = models.ForeignKey(Operation, verbose_name=_(u"Operation"), @@ -132,16 +133,18 @@ class ContextRecord(BaseHistorizedItem, OwnPerms, ShortMenuItem): opening_date = models.DateField(_(u"Date d'ouverture"), blank=True, null=True) closing_date = models.DateField(_(u"End date"), blank=True, null=True) - length = models.IntegerField(_(u"Length (cm)"), blank=True, null=True) - width = models.IntegerField(_(u"Width (cm)"), blank=True, null=True) - thickness = models.IntegerField(_(u"Thickness (cm)"), blank=True, - null=True) - depth = models.IntegerField(_(u"Depth (cm)"), blank=True, null=True) + length = models.FloatField(_(u"Length (m)"), blank=True, null=True) + width = models.FloatField(_(u"Width (m)"), blank=True, null=True) + thickness = models.FloatField(_(u"Thickness (m)"), blank=True, + null=True) + depth = models.FloatField(_(u"Depth (m)"), blank=True, null=True) location = models.CharField( _(u"Location"), blank=True, null=True, max_length=200, help_text=_(u"A short description of the location of the context " u"record")) datings = models.ManyToManyField(Dating) + datings_comment = models.TextField(_(u"Comment on datings"), blank=True, + null=True) unit = models.ForeignKey(Unit, verbose_name=_(u"Unit"), related_name='+', blank=True, null=True) has_furniture = models.NullBooleanField(_(u"Has furniture?"), blank=True, @@ -298,6 +301,19 @@ class ContextRecord(BaseHistorizedItem, OwnPerms, ShortMenuItem): from archaeological_finds.models import FindSource return FindSource.objects.filter(find__base_finds__context_record=self) + def save(self, *args, **kwargs): + returned = super(ContextRecord, self).save(*args, **kwargs) + updated = False + if not self.external_id or self.auto_external_id: + external_id = get_external_id('context_record_external_id', self) + if external_id != self.external_id: + updated = True + self.auto_external_id = True + self.external_id = external_id + if updated: + self.save() + return returned + class RelationType(GeneralRelationType): inverse_relation = models.ForeignKey( @@ -328,6 +344,8 @@ post_delete.connect(post_delete_record_relation, sender=RecordRelations) class ContextRecordSource(Source): SHOW_URL = 'show-contextrecordsource' MODIFY_URL = 'record_source_modify' + TABLE_COLS = ['context_record__operation', 'context_record'] + \ + Source.TABLE_COLS class Meta: verbose_name = _(u"Context record documentation") |