summaryrefslogtreecommitdiff
path: root/ishtar_common/model_merging.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2017-09-25 16:31:20 +0200
committerÉtienne Loks <etienne.loks@iggdrasil.net>2017-09-25 16:31:20 +0200
commitc51fe37c9fa264a81ea890877871b5a5bbced14f (patch)
tree05294b754d86467dfad7e1b0d0a741d67533e96a /ishtar_common/model_merging.py
parent643425669e249983aac1afb15260cefee49f54fc (diff)
downloadIshtar-c51fe37c9fa264a81ea890877871b5a5bbced14f.tar.bz2
Ishtar-c51fe37c9fa264a81ea890877871b5a5bbced14f.zip
Merge: fix one to one field merge (such as person for ishtaruser)
Diffstat (limited to 'ishtar_common/model_merging.py')
-rw-r--r--ishtar_common/model_merging.py13
1 files changed, 9 insertions, 4 deletions
diff --git a/ishtar_common/model_merging.py b/ishtar_common/model_merging.py
index a390f233c..3f392f596 100644
--- a/ishtar_common/model_merging.py
+++ b/ishtar_common/model_merging.py
@@ -22,7 +22,7 @@ def get_models():
@transaction.atomic
def merge_model_objects(primary_object, alias_objects=[], keep_old=False):
"""
- Use this function to merge model objects (i.e. Users, Organizations, Polls,
+ 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
primary object.
@@ -81,9 +81,14 @@ def merge_model_objects(primary_object, alias_objects=[], keep_old=False):
related_objects = getattr(alias_object, alias_varname)
except ObjectDoesNotExist:
continue
- for obj in related_objects.all():
- setattr(obj, obj_varname, primary_object)
- obj.save()
+ if not hasattr(related_objects, 'all'):
+ # one to one field
+ setattr(related_objects, obj_varname, primary_object)
+ related_objects.save()
+ else:
+ for obj in related_objects.all():
+ setattr(obj, obj_varname, primary_object)
+ obj.save()
# Migrate all many to many references from alias object to primary
# object.