From 8fb52132bb13376c3a92aeb14fa51641710e808f Mon Sep 17 00:00:00 2001 From: Artur Borecki Date: Tue, 10 Mar 2026 14:16:37 +0100 Subject: [PATCH] feat(migrations): track migrations --- home/migrations/0001_initial.py | 31 ++++++++++++ home/migrations/0002_create_homepage.py | 66 +++++++++++++++++++++++++ home/migrations/0003_homepage_body.py | 19 +++++++ 3 files changed, 116 insertions(+) create mode 100644 home/migrations/0001_initial.py create mode 100644 home/migrations/0002_create_homepage.py create mode 100644 home/migrations/0003_homepage_body.py diff --git a/home/migrations/0001_initial.py b/home/migrations/0001_initial.py new file mode 100644 index 0000000..67f201d --- /dev/null +++ b/home/migrations/0001_initial.py @@ -0,0 +1,31 @@ +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ("wagtailcore", "0040_page_draft_title"), + ] + + operations = [ + migrations.CreateModel( + name="HomePage", + fields=[ + ( + "page_ptr", + models.OneToOneField( + on_delete=models.CASCADE, + parent_link=True, + auto_created=True, + primary_key=True, + serialize=False, + to="wagtailcore.Page", + ), + ), + ], + options={ + "abstract": False, + }, + bases=("wagtailcore.page",), + ), + ] diff --git a/home/migrations/0002_create_homepage.py b/home/migrations/0002_create_homepage.py new file mode 100644 index 0000000..a3e918e --- /dev/null +++ b/home/migrations/0002_create_homepage.py @@ -0,0 +1,66 @@ +from django.db import migrations + + +def create_homepage(apps, schema_editor): + # Get models + ContentType = apps.get_model("contenttypes.ContentType") + Page = apps.get_model("wagtailcore.Page") + Site = apps.get_model("wagtailcore.Site") + HomePage = apps.get_model("home.HomePage") + + # Delete the default homepage (of type Page) as created by wagtailcore.0002_initial_data, + # if it exists + page_content_type = ContentType.objects.get( + model="page", app_label="wagtailcore" + ) + Page.objects.filter( + content_type=page_content_type, slug="home", depth=2 + ).delete() + + # Create content type for homepage model + homepage_content_type, __ = ContentType.objects.get_or_create( + model="homepage", app_label="home" + ) + + # Create a new homepage + homepage = HomePage.objects.create( + title="Home", + draft_title="Home", + slug="home", + content_type=homepage_content_type, + path="00010001", + depth=2, + numchild=0, + url_path="/home/", + ) + + # Create a site with the new homepage set as the root + Site.objects.create(hostname="localhost", root_page=homepage, is_default_site=True) + + +def remove_homepage(apps, schema_editor): + # Get models + ContentType = apps.get_model("contenttypes.ContentType") + HomePage = apps.get_model("home.HomePage") + + # Delete the default homepage + # Page and Site objects CASCADE + HomePage.objects.filter(slug="home", depth=2).delete() + + # Delete content type for homepage model + ContentType.objects.filter(model="homepage", app_label="home").delete() + + +class Migration(migrations.Migration): + + run_before = [ + ("wagtailcore", "0053_locale_model"), + ] + + dependencies = [ + ("home", "0001_initial"), + ] + + operations = [ + migrations.RunPython(create_homepage, remove_homepage), + ] diff --git a/home/migrations/0003_homepage_body.py b/home/migrations/0003_homepage_body.py new file mode 100644 index 0000000..d220e63 --- /dev/null +++ b/home/migrations/0003_homepage_body.py @@ -0,0 +1,19 @@ +# Generated by Django 6.0.3 on 2026-03-10 11:55 + +import wagtail.fields +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0002_create_homepage'), + ] + + operations = [ + migrations.AddField( + model_name='homepage', + name='body', + field=wagtail.fields.RichTextField(blank=True), + ), + ]