summaryrefslogtreecommitdiff
path: root/archaeological_operations/models.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2016-07-27 11:49:04 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2016-07-27 11:49:04 +0200
commit4ad9278e67d8fb024c685df03812c2e1d8313aa1 (patch)
treedde04c38350d5952174ae29f189c132e56061b3b /archaeological_operations/models.py
parent1b754a300be8844e2e0b45839639cb92002d5d5e (diff)
downloadIshtar-4ad9278e67d8fb024c685df03812c2e1d8313aa1.tar.bz2
Ishtar-4ad9278e67d8fb024c685df03812c2e1d8313aa1.zip
Sync external ID on manual insert (refs #3161)
Diffstat (limited to 'archaeological_operations/models.py')
-rw-r--r--archaeological_operations/models.py18
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)