diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-02-22 15:45:40 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2017-02-22 15:45:40 +0100 | 
| commit | b564d3d2d32782ca439f9d721d01b0fe6cff25a3 (patch) | |
| tree | fd3cd5fd78447db9db5663c3c30c4d4d1379da54 /archaeological_operations/models.py | |
| parent | 2b059ee6ed6e90c63ab8f04d3709800d4d365227 (diff) | |
| download | Ishtar-b564d3d2d32782ca439f9d721d01b0fe6cff25a3.tar.bz2 Ishtar-b564d3d2d32782ca439f9d721d01b0fe6cff25a3.zip | |
Fix cache operation update - Parcel associated with context records are not removed!
Diffstat (limited to 'archaeological_operations/models.py')
| -rw-r--r-- | archaeological_operations/models.py | 21 | 
1 files changed, 14 insertions, 7 deletions
| diff --git a/archaeological_operations/models.py b/archaeological_operations/models.py index 7c9efaef7..225d46a53 100644 --- a/archaeological_operations/models.py +++ b/archaeological_operations/models.py @@ -29,7 +29,8 @@ from django.db.models.signals import post_save, m2m_changed, post_delete  from django.forms import ValidationError  from django.utils.translation import ugettext_lazy as _, ugettext -from ishtar_common.utils import cached_label_changed, get_cache, mode +from ishtar_common.utils import cached_label_changed, \ +    force_cached_label_changed, get_cache, mode  from ishtar_common.models import GeneralType, BaseHistorizedItem, \      HistoricalRecords, LightHistorizedItem, OwnPerms, Department, Source,\ @@ -769,7 +770,7 @@ class Operation(ClosedItem, BaseHistorizedItem, ImageModel, OwnPerms,          return super(Operation, self).save(*args, **kwargs) -m2m_changed.connect(cached_label_changed, sender=Operation.towns.through) +m2m_changed.connect(force_cached_label_changed, sender=Operation.towns.through)  def operation_post_save(sender, **kwargs): @@ -1356,16 +1357,22 @@ class Parcel(LightHistorizedItem):  def parcel_post_save(sender, **kwargs):      if not kwargs['instance']:          return +    from archaeological_context_records.models import ContextRecord      parcel = kwargs['instance']      created = kwargs.get('created', None) +    updated = False      # remove when the parcel is linked to nothing -    if not getattr(parcel, '_updated_id', None) and not created and not \ -            parcel.operation and not parcel.associated_file: -        parcel.delete() -        return +    if not getattr(parcel, '_updated_id', None) and not created \ +            and not parcel.operation and not parcel.associated_file: +        if parcel.context_record.count(): +            # trying to restore a lost parcel +            parcel.operation = parcel.context_record.all()[0].operation +            updated = True +        else: +            parcel.delete() +            return -    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: | 
