diff options
Diffstat (limited to 'ishtar_common/utils_migrations.py')
-rw-r--r-- | ishtar_common/utils_migrations.py | 48 |
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)) |