diff options
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r-- | archaeological_operations/models.py | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index d919bd305..ff51f78e8 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -34,7 +34,8 @@ from ishtar_common.models import GeneralType, BaseHistorizedItem, \ HistoricalRecords, LightHistorizedItem, OwnPerms, Department, Source,\ Person, Organization, Town, Dashboard, IshtarUser, ValueGetter, \ DocumentTemplate, ShortMenuItem, DashboardFormItem, GeneralRelationType,\ - GeneralRecordRelations, post_delete_record_relation, OperationType + GeneralRecordRelations, post_delete_record_relation, OperationType, \ + get_external_id class RemainType(GeneralType): @@ -777,6 +778,8 @@ class Parcel(LightHistorizedItem): null=True, blank=True) external_id = models.CharField(_(u"External ID"), max_length=100, null=True, blank=True) + auto_external_id = models.BooleanField( + _(u"External ID is set automatically"), default=False) address = models.TextField(_(u"Address - Locality"), null=True, blank=True) class Meta: @@ -916,11 +919,18 @@ def parcel_post_save(sender, **kwargs): if not kwargs['instance']: return parcel = kwargs['instance'] - if not parcel.external_id and (parcel.section or parcel.parcel_number): - parcel.external_id = unicode(parcel.section or "") + \ - unicode(parcel.parcel_number or "") + + updated = False + if not parcel.external_id or parcel.auto_external_id: + external_id = get_external_id('parcel_external_id', parcel) + if external_id != parcel.external_id: + updated = True + parcel.auto_external_id = True + parcel.external_id = external_id + if updated: parcel.save() return + if parcel.operation and parcel.operation.pk and \ parcel.town not in list(parcel.operation.towns.all()): parcel.operation.towns.add(parcel.town) |