diff options
-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 |