summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2019-04-05 15:45:26 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2019-04-05 15:45:26 +0200
commitcb81ce310c580dfdb804e39b4b145296737d22b4 (patch)
tree3ef5273826560c4082dc2e40fddc14810137b5f8
parentdff0db2127ba254ed06edf8799f08bbe6048e317 (diff)
downloadIshtar-cb81ce310c580dfdb804e39b4b145296737d22b4.tar.bz2
Ishtar-cb81ce310c580dfdb804e39b4b145296737d22b4.zip
Merge: generic function for main items - adpat for containers
-rw-r--r--archaeological_warehouse/models.py13
-rw-r--r--ishtar_common/model_merging.py3
-rw-r--r--ishtar_common/models.py3
3 files changed, 18 insertions, 1 deletions
diff --git a/archaeological_warehouse/models.py b/archaeological_warehouse/models.py
index ae1ef5e47..c80b4476b 100644
--- a/archaeological_warehouse/models.py
+++ b/archaeological_warehouse/models.py
@@ -536,6 +536,19 @@ class Container(LightHistorizedItem, OwnPerms):
def _get_base_image_path(self):
return self.responsible._get_base_image_path() + u"/" + self.external_id
+ def merge(self, item, keep_old=False):
+ locas = [
+ cl.division.division.txt_idx
+ for cl in ContainerLocalisation.objects.filter(container=self).all()
+ ]
+ for loca in ContainerLocalisation.objects.filter(container=item).all():
+ if loca.division.division.txt_idx not in locas:
+ loca.container = self
+ loca.save()
+ else:
+ loca.delete()
+ super(Container, self).merge(item, keep_old=keep_old)
+
@classmethod
def get_query_owns(cls, ishtaruser):
return Q(history_creator=ishtaruser.user_ptr) | \
diff --git a/ishtar_common/model_merging.py b/ishtar_common/model_merging.py
index c8e2bc6bf..188ec42dd 100644
--- a/ishtar_common/model_merging.py
+++ b/ishtar_common/model_merging.py
@@ -20,7 +20,7 @@ def get_models():
@transaction.atomic
-def merge_model_objects(primary_object, alias_objects=[], keep_old=False):
+def merge_model_objects(primary_object, alias_objects, keep_old=False):
"""
Use this function to merge model objects (i.e. Users, Organizations,
etc.) and migrate all of the related fields from the alias objects to the
@@ -154,5 +154,6 @@ def merge_model_objects(primary_object, alias_objects=[], keep_old=False):
if not keep_old:
alias_object.delete()
+ primary_object.skip_history_when_saving = True
primary_object.save()
return primary_object
diff --git a/ishtar_common/models.py b/ishtar_common/models.py
index f49bd9560..6a4a0930e 100644
--- a/ishtar_common/models.py
+++ b/ishtar_common/models.py
@@ -1636,6 +1636,9 @@ class BaseHistorizedItem(DocumentItem, FullSearch, Imported, JsonData,
def get_verbose_name(cls):
return cls._meta.verbose_name
+ def merge(self, item, keep_old=False):
+ merge_model_objects(self, item, keep_old=keep_old)
+
def update_external_id(self, save=False):
if not self.EXTERNAL_ID_KEY or (
self.external_id and