# Generated by Django 4.2.1 on 2023-11-15 12:00 from django.db import migrations import wagtail.blocks import wagtail.fields import wagtail.images.blocks def migrate_legacy_slides_to_streamfield(apps, schema_editor): """ Migrate data from legacy slide fields to the new StreamField. """ HomePage = apps.get_model('core', 'HomePage') # Get all HomePage instances homepages = HomePage.objects.all() # For each HomePage, migrate the legacy slides to the new StreamField for homepage in homepages: slides = [] # Check if slide1 exists if homepage.slide1_img: slides.append({ 'type': 'slide', 'value': { 'image': homepage.slide1_img.id, 'headline': homepage.slide1_headline, 'subline': homepage.slide1_subline, 'link_url': homepage.slide1_link_url, 'link_text': homepage.slide1_link_text, } }) # Check if slide2 exists if homepage.slide2_img: slides.append({ 'type': 'slide', 'value': { 'image': homepage.slide2_img.id, 'headline': homepage.slide2_headline, 'subline': homepage.slide2_subline, 'link_url': homepage.slide2_link_url, 'link_text': homepage.slide2_link_text, } }) # Check if slide3 exists if homepage.slide3_img: slides.append({ 'type': 'slide', 'value': { 'image': homepage.slide3_img.id, 'headline': homepage.slide3_headline, 'subline': homepage.slide3_subline, 'link_url': homepage.slide3_link_url, 'link_text': homepage.slide3_link_text, } }) # Set the new slides StreamField homepage.slides = slides homepage.save() class Migration(migrations.Migration): dependencies = [ ('core', '0016_refactor_eventpage_slides'), ] operations = [ migrations.AddField( model_name='homepage', name='slides', field=wagtail.fields.StreamField([('slide', wagtail.blocks.StructBlock([('image', wagtail.images.blocks.ImageChooserBlock()), ('headline', wagtail.blocks.CharBlock(max_length=512, required=False)), ('subline', wagtail.blocks.CharBlock(max_length=512, required=False)), ('link_url', wagtail.blocks.URLBlock(required=False)), ('link_text', wagtail.blocks.CharBlock(max_length=64, required=False))]))], blank=True, null=True, use_json_field=True), ), migrations.RunPython(migrate_legacy_slides_to_streamfield, migrations.RunPython.noop), ]