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.
79 lines
2.8 KiB
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),
|
|
]
|
|
|