diff options
| 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 | 
| commit | 4ad9278e67d8fb024c685df03812c2e1d8313aa1 (patch) | |
| tree | dde04c38350d5952174ae29f189c132e56061b3b /archaeological_operations/models.py | |
| parent | 1b754a300be8844e2e0b45839639cb92002d5d5e (diff) | |
| download | Ishtar-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.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) | 
