summaryrefslogtreecommitdiff
path: root/archaeological_operations/models.py
diff options
context:
space:
mode:
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
commitb564d3d2d32782ca439f9d721d01b0fe6cff25a3 (patch)
treefd3cd5fd78447db9db5663c3c30c4d4d1379da54 /archaeological_operations/models.py
parent2b059ee6ed6e90c63ab8f04d3709800d4d365227 (diff)
downloadIshtar-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.py21
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: