summaryrefslogtreecommitdiff
path: root/ishtar_common/utils_migrations.py
diff options
context:
space:
mode:
Diffstat (limited to 'ishtar_common/utils_migrations.py')
-rw-r--r--ishtar_common/utils_migrations.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/ishtar_common/utils_migrations.py b/ishtar_common/utils_migrations.py
new file mode 100644
index 000000000..9f514ea48
--- /dev/null
+++ b/ishtar_common/utils_migrations.py
@@ -0,0 +1,48 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+from django.core.files import File
+import os
+
+
+def migrate_simple_image_to_m2m(base_model, image_model, rel_model,
+ verbose=False):
+ missing, moved = 0, 0
+ for item in base_model.objects.all():
+ if not item.image:
+ continue
+
+ image_instance = image_model.objects.create()
+
+ try:
+ image_instance.image.save(
+ os.path.basename(item.image.path),
+ File(open(item.image.path))
+ )
+ image_instance.thumbnail.save(
+ os.path.basename(item.thumbnail.path),
+ File(open(item.thumbnail.path))
+ )
+ except IOError:
+ # image not on hard-drive
+ item.image = None
+ item.thumbnail = None
+ item.save()
+ image_instance.delete()
+ missing += 1
+ continue
+
+ image_instance.save()
+
+ rel_model.objects.create(item=item, image=image_instance, is_main=True)
+
+ # clean
+ item.image = None
+ item.thumbnail = None
+ item.save()
+ moved += 1
+ if verbose:
+ print("")
+ print(base_model)
+ print("{} missing".format(missing))
+ print("{} moved".format(moved))