# -*- coding: utf-8 -*- # Generated by Django 1.9.7 on 2016-09-18 03:58 from __future__ import unicode_literals from django.db import migrations def image_to_custom_image(apps, schema_editor): Image = apps.get_model("wagtailimages","Image") CustomImage = apps.get_model("cms_pages", "CustomImage") HomePage = apps.get_model("cms_pages", "HomePage") #tags = TaggableManager(help_text=None, blank=True, verbose_name=_('tags')) keys = ( "title", "file", "width", "height", "created_at", "uploaded_by_user", "focal_point_y", "focal_point_x", "focal_point_width", "focal_point_height", "file_size", ) customs = {} for image in Image.objects.all(): kwargs = dict((key, getattr(image, key)) for key in keys) custom_image = CustomImage(**kwargs) # Does this actually work?! custom_image.tags = image.tags custom_image.save() customs[image.id] = custom_image def swap(customs, block, key): im = (block.value[key]) if im is not None: block.value[key] = customs[im.id] # Go through the links. for page in HomePage.objects.all(): for block in page.body: if block.block_type == "basic_content": swap(customs, block, "background_image") elif block.block_type == "keynotes": for keynote in block.value: swap(customs, keynote, "profile_image") page.save() abstract_content_page_models = ["ContentPage", "NewsIndexPage", "NewsPage"] for model in abstract_content_page_models: Model = apps.get_model("cms_pages", model) for page in Model.objects.all(): for block in page.body: if block.block_type == "floating_image" and block.value: block.value = customs[block.value.id] if page.background_image: page.background_image_CUSTOM = customs[page.background_image.id] if model == "NewsPage" and page.portrait_image: page.portrait_image_CUSTOM = customs[page.portrait_image.id] page.save() Image.objects.all().delete() class Migration(migrations.Migration): dependencies = [ ('cms_pages', '0013_auto_20160918_0358'), ] operations = [ migrations.RunPython(image_to_custom_image), ]