summaryrefslogtreecommitdiff
path: root/archaeological_context_records/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'archaeological_context_records/models.py')
-rw-r--r--archaeological_context_records/models.py34
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")