diff options
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 |
commit | cb81ce310c580dfdb804e39b4b145296737d22b4 (patch) | |
tree | 3ef5273826560c4082dc2e40fddc14810137b5f8 | |
parent | dff0db2127ba254ed06edf8799f08bbe6048e317 (diff) | |
download | Ishtar-cb81ce310c580dfdb804e39b4b145296737d22b4.tar.bz2 Ishtar-cb81ce310c580dfdb804e39b4b145296737d22b4.zip |
Merge: generic function for main items - adpat for containers
-rw-r--r-- | archaeological_warehouse/models.py | 13 | ||||
-rw-r--r-- | ishtar_common/model_merging.py | 3 | ||||
-rw-r--r-- | ishtar_common/models.py | 3 |
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 |