You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
feo-homepage/core/migrations/0017_homepage_slides.py

79 lines
2.8 KiB

# 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),
]