diff options
Diffstat (limited to 'archaeological_context_records/models.py')
| -rw-r--r-- | archaeological_context_records/models.py | 20 | 
1 files changed, 17 insertions, 3 deletions
| diff --git a/archaeological_context_records/models.py b/archaeological_context_records/models.py index 89499463a..1378463a5 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"), @@ -298,6 +299,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( | 
