From 2c21cca5a7190bdd728b0f8b7edb47b410b4baf5 Mon Sep 17 00:00:00 2001 From: Warren Chen Date: Wed, 26 Nov 2025 17:29:52 +0900 Subject: [PATCH] Clean up and re-generate migrations --- ..._navigationsettings_github_url_and_more.py | 36 -------- ...ter_navigationsettings_options_and_more.py | 59 +++++++++++++ .../migrations/0003_socialmediasettings.py | 24 ------ ...ter_navigationsettings_options_and_more.py | 44 ---------- .../base/migrations/0005_headersettring.py | 28 ------- ...6_rename_headersettring_headersettrings.py | 18 ---- ...7_rename_headersettrings_headersettings.py | 18 ---- .../0003_articlepage_categorypage.py | 39 --------- ...tpage_trendingpage_articlepage_and_more.py | 83 +++++++++++++++++++ .../0004_latestpage_recommandedpage.py | 35 -------- ..._rename_recommandedpage_recommendedpage.py | 18 ---- ...age_cover_image_articlepage_recommended.py | 25 ------ ...age_banner_image_alter_articlepage_body.py | 26 ------ ...alter_articlepage_banner_image_and_more.py | 36 -------- .../0009_articlepagetag_articlepage_tags.py | 59 ------------- .../0010_alter_articlepage_recommended.py | 20 ----- ...011_rename_recommendedpage_trendingpage.py | 15 ---- ...commended_articlepage_trending_and_more.py | 30 ------- .../migrations/0013_alter_articlepage_date.py | 46 ---------- 19 files changed, 142 insertions(+), 517 deletions(-) delete mode 100644 innovedus_cms/base/migrations/0002_remove_navigationsettings_github_url_and_more.py create mode 100644 innovedus_cms/base/migrations/0002_socialmediasettings_alter_navigationsettings_options_and_more.py delete mode 100644 innovedus_cms/base/migrations/0003_socialmediasettings.py delete mode 100644 innovedus_cms/base/migrations/0004_alter_navigationsettings_options_and_more.py delete mode 100644 innovedus_cms/base/migrations/0005_headersettring.py delete mode 100644 innovedus_cms/base/migrations/0006_rename_headersettring_headersettrings.py delete mode 100644 innovedus_cms/base/migrations/0007_rename_headersettrings_headersettings.py delete mode 100644 innovedus_cms/home/migrations/0003_articlepage_categorypage.py create mode 100644 innovedus_cms/home/migrations/0003_categorypage_latestpage_trendingpage_articlepage_and_more.py delete mode 100644 innovedus_cms/home/migrations/0004_latestpage_recommandedpage.py delete mode 100644 innovedus_cms/home/migrations/0005_rename_recommandedpage_recommendedpage.py delete mode 100644 innovedus_cms/home/migrations/0006_articlepage_cover_image_articlepage_recommended.py delete mode 100644 innovedus_cms/home/migrations/0007_articlepage_banner_image_alter_articlepage_body.py delete mode 100644 innovedus_cms/home/migrations/0008_alter_articlepage_banner_image_and_more.py delete mode 100644 innovedus_cms/home/migrations/0009_articlepagetag_articlepage_tags.py delete mode 100644 innovedus_cms/home/migrations/0010_alter_articlepage_recommended.py delete mode 100644 innovedus_cms/home/migrations/0011_rename_recommendedpage_trendingpage.py delete mode 100644 innovedus_cms/home/migrations/0012_rename_recommended_articlepage_trending_and_more.py delete mode 100644 innovedus_cms/home/migrations/0013_alter_articlepage_date.py diff --git a/innovedus_cms/base/migrations/0002_remove_navigationsettings_github_url_and_more.py b/innovedus_cms/base/migrations/0002_remove_navigationsettings_github_url_and_more.py deleted file mode 100644 index 5c2df52..0000000 --- a/innovedus_cms/base/migrations/0002_remove_navigationsettings_github_url_and_more.py +++ /dev/null @@ -1,36 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-15 06:17 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('base', '0001_initial'), - ] - - operations = [ - migrations.RemoveField( - model_name='navigationsettings', - name='github_url', - ), - migrations.RemoveField( - model_name='navigationsettings', - name='mastodon_url', - ), - migrations.AddField( - model_name='navigationsettings', - name='facebook_url', - field=models.URLField(blank=True, verbose_name='Facebook URL'), - ), - migrations.AddField( - model_name='navigationsettings', - name='instagram_url', - field=models.URLField(blank=True, verbose_name='Instagram URL'), - ), - migrations.AddField( - model_name='navigationsettings', - name='thread_url', - field=models.URLField(blank=True, verbose_name='Thread URL'), - ), - ] diff --git a/innovedus_cms/base/migrations/0002_socialmediasettings_alter_navigationsettings_options_and_more.py b/innovedus_cms/base/migrations/0002_socialmediasettings_alter_navigationsettings_options_and_more.py new file mode 100644 index 0000000..3aa1e59 --- /dev/null +++ b/innovedus_cms/base/migrations/0002_socialmediasettings_alter_navigationsettings_options_and_more.py @@ -0,0 +1,59 @@ +# Generated by Django 5.2.7 on 2025-11-26 08:11 + +import django.db.models.deletion +import wagtail.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('base', '0001_initial'), + ('wagtailimages', '0027_image_description'), + ] + + operations = [ + migrations.CreateModel( + name='SocialMediaSettings', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('links', wagtail.fields.StreamField([('link', 2)], block_lookup={0: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('facebook', 'Facebook'), ('twitter', 'Twitter'), ('instagram', 'Instagram'), ('thread', 'Thread'), ('linkedin', 'LinkedIn'), ('youtube', 'YouTube')]}), 1: ('wagtail.blocks.URLBlock', (), {}), 2: ('wagtail.blocks.StructBlock', [[('platform', 0), ('url', 1)]], {})})), + ], + options={ + 'abstract': False, + }, + ), + migrations.AlterModelOptions( + name='navigationsettings', + options={'verbose_name': 'Footer Navigation'}, + ), + migrations.RemoveField( + model_name='navigationsettings', + name='github_url', + ), + migrations.RemoveField( + model_name='navigationsettings', + name='linkedin_url', + ), + migrations.RemoveField( + model_name='navigationsettings', + name='mastodon_url', + ), + migrations.AddField( + model_name='navigationsettings', + name='footer_links', + field=wagtail.fields.StreamField([('section', 5)], blank=True, block_lookup={0: ('wagtail.blocks.CharBlock', (), {'required': False}), 1: ('wagtail.blocks.CharBlock', (), {}), 2: ('wagtail.blocks.URLBlock', (), {}), 3: ('wagtail.blocks.StructBlock', [[('label', 1), ('url', 2)]], {}), 4: ('wagtail.blocks.ListBlock', (3,), {}), 5: ('wagtail.blocks.StructBlock', [[('title', 0), ('links', 4)]], {})}, null=True), + ), + migrations.CreateModel( + name='HeaderSettings', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('site_name', models.CharField(blank=True, max_length=255)), + ('extra_links', wagtail.fields.StreamField([('link', 2)], blank=True, block_lookup={0: ('wagtail.blocks.CharBlock', (), {}), 1: ('wagtail.blocks.URLBlock', (), {}), 2: ('wagtail.blocks.StructBlock', [[('label', 0), ('url', 1)]], {})}, null=True)), + ('logo', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')), + ], + options={ + 'verbose_name': 'Header Settings', + }, + ), + ] diff --git a/innovedus_cms/base/migrations/0003_socialmediasettings.py b/innovedus_cms/base/migrations/0003_socialmediasettings.py deleted file mode 100644 index ea4f694..0000000 --- a/innovedus_cms/base/migrations/0003_socialmediasettings.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-15 06:48 - -import wagtail.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('base', '0002_remove_navigationsettings_github_url_and_more'), - ] - - operations = [ - migrations.CreateModel( - name='SocialMediaSettings', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('links', wagtail.fields.StreamField([('link', 2)], block_lookup={0: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('twitter', 'Twitter'), ('instagram', 'Instagram'), ('linkedin', 'LinkedIn'), ('youtube', 'YouTube')]}), 1: ('wagtail.blocks.URLBlock', (), {}), 2: ('wagtail.blocks.StructBlock', [[('platform', 0), ('url', 1)]], {})})), - ], - options={ - 'abstract': False, - }, - ), - ] diff --git a/innovedus_cms/base/migrations/0004_alter_navigationsettings_options_and_more.py b/innovedus_cms/base/migrations/0004_alter_navigationsettings_options_and_more.py deleted file mode 100644 index 8bc5815..0000000 --- a/innovedus_cms/base/migrations/0004_alter_navigationsettings_options_and_more.py +++ /dev/null @@ -1,44 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-15 08:49 - -import wagtail.fields -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('base', '0003_socialmediasettings'), - ] - - operations = [ - migrations.AlterModelOptions( - name='navigationsettings', - options={'verbose_name': 'Footer Navigation'}, - ), - migrations.RemoveField( - model_name='navigationsettings', - name='facebook_url', - ), - migrations.RemoveField( - model_name='navigationsettings', - name='instagram_url', - ), - migrations.RemoveField( - model_name='navigationsettings', - name='linkedin_url', - ), - migrations.RemoveField( - model_name='navigationsettings', - name='thread_url', - ), - migrations.AddField( - model_name='navigationsettings', - name='footer_links', - field=wagtail.fields.StreamField([('section', 5)], blank=True, block_lookup={0: ('wagtail.blocks.CharBlock', (), {'required': False}), 1: ('wagtail.blocks.CharBlock', (), {}), 2: ('wagtail.blocks.URLBlock', (), {}), 3: ('wagtail.blocks.StructBlock', [[('label', 1), ('url', 2)]], {}), 4: ('wagtail.blocks.ListBlock', (3,), {}), 5: ('wagtail.blocks.StructBlock', [[('title', 0), ('links', 4)]], {})}, null=True), - ), - migrations.AlterField( - model_name='socialmediasettings', - name='links', - field=wagtail.fields.StreamField([('link', 2)], block_lookup={0: ('wagtail.blocks.ChoiceBlock', [], {'choices': [('facebook', 'Facebook'), ('twitter', 'Twitter'), ('instagram', 'Instagram'), ('thread', 'Thread'), ('linkedin', 'LinkedIn'), ('youtube', 'YouTube')]}), 1: ('wagtail.blocks.URLBlock', (), {}), 2: ('wagtail.blocks.StructBlock', [[('platform', 0), ('url', 1)]], {})}), - ), - ] diff --git a/innovedus_cms/base/migrations/0005_headersettring.py b/innovedus_cms/base/migrations/0005_headersettring.py deleted file mode 100644 index 8d138e0..0000000 --- a/innovedus_cms/base/migrations/0005_headersettring.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-16 04:59 - -import django.db.models.deletion -import wagtail.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('base', '0004_alter_navigationsettings_options_and_more'), - ('wagtailimages', '0027_image_description'), - ] - - operations = [ - migrations.CreateModel( - name='HeaderSettring', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('site_name', models.CharField(blank=True, max_length=255)), - ('extra_links', wagtail.fields.StreamField([('link', 2)], blank=True, block_lookup={0: ('wagtail.blocks.CharBlock', (), {}), 1: ('wagtail.blocks.URLBlock', (), {}), 2: ('wagtail.blocks.StructBlock', [[('label', 0), ('url', 1)]], {})}, null=True)), - ('logo', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')), - ], - options={ - 'verbose_name': 'Header Settings', - }, - ), - ] diff --git a/innovedus_cms/base/migrations/0006_rename_headersettring_headersettrings.py b/innovedus_cms/base/migrations/0006_rename_headersettring_headersettrings.py deleted file mode 100644 index f5fc5b2..0000000 --- a/innovedus_cms/base/migrations/0006_rename_headersettring_headersettrings.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-16 05:11 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('base', '0005_headersettring'), - ('wagtailimages', '0027_image_description'), - ] - - operations = [ - migrations.RenameModel( - old_name='HeaderSettring', - new_name='HeaderSettrings', - ), - ] diff --git a/innovedus_cms/base/migrations/0007_rename_headersettrings_headersettings.py b/innovedus_cms/base/migrations/0007_rename_headersettrings_headersettings.py deleted file mode 100644 index 1a1f312..0000000 --- a/innovedus_cms/base/migrations/0007_rename_headersettrings_headersettings.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-16 05:12 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('base', '0006_rename_headersettring_headersettrings'), - ('wagtailimages', '0027_image_description'), - ] - - operations = [ - migrations.RenameModel( - old_name='HeaderSettrings', - new_name='HeaderSettings', - ), - ] diff --git a/innovedus_cms/home/migrations/0003_articlepage_categorypage.py b/innovedus_cms/home/migrations/0003_articlepage_categorypage.py deleted file mode 100644 index ed3cc8a..0000000 --- a/innovedus_cms/home/migrations/0003_articlepage_categorypage.py +++ /dev/null @@ -1,39 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-17 04:15 - -import django.db.models.deletion -import wagtail.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0002_create_homepage'), - ('wagtailcore', '0095_groupsitepermission'), - ] - - operations = [ - migrations.CreateModel( - name='ArticlePage', - fields=[ - ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')), - ('date', models.DateField(verbose_name='Published date')), - ('intro', models.CharField(blank=True, max_length=250)), - ('body', wagtail.fields.StreamField([('heading', 0), ('paragraph', 1), ('image', 2), ('embed', 3)], block_lookup={0: ('wagtail.blocks.CharBlock', (), {'form_classname': 'full title'}), 1: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link']}), 2: ('wagtail.images.blocks.ImageChooserBlock', (), {}), 3: ('wagtail.embeds.blocks.EmbedBlock', (), {})})), - ], - options={ - 'abstract': False, - }, - bases=('wagtailcore.page',), - ), - migrations.CreateModel( - name='CategoryPage', - fields=[ - ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')), - ], - options={ - 'abstract': False, - }, - bases=('wagtailcore.page',), - ), - ] diff --git a/innovedus_cms/home/migrations/0003_categorypage_latestpage_trendingpage_articlepage_and_more.py b/innovedus_cms/home/migrations/0003_categorypage_latestpage_trendingpage_articlepage_and_more.py new file mode 100644 index 0000000..571b554 --- /dev/null +++ b/innovedus_cms/home/migrations/0003_categorypage_latestpage_trendingpage_articlepage_and_more.py @@ -0,0 +1,83 @@ +# Generated by Django 5.2.7 on 2025-11-26 08:11 + +import django.db.models.deletion +import home.models +import modelcluster.contrib.taggit +import modelcluster.fields +import wagtail.fields +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('home', '0002_create_homepage'), + ('taggit', '0006_rename_taggeditem_content_type_object_id_taggit_tagg_content_8fc721_idx'), + ('wagtailcore', '0095_groupsitepermission'), + ('wagtailimages', '0027_image_description'), + ] + + operations = [ + migrations.CreateModel( + name='CategoryPage', + fields=[ + ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page', home.models.CategoryMixin), + ), + migrations.CreateModel( + name='LatestPage', + fields=[ + ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page', home.models.CategoryMixin), + ), + migrations.CreateModel( + name='TrendingPage', + fields=[ + ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page', home.models.CategoryMixin), + ), + migrations.CreateModel( + name='ArticlePage', + fields=[ + ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')), + ('date', models.DateTimeField(verbose_name='Published date')), + ('intro', models.CharField(blank=True, max_length=250)), + ('body', wagtail.fields.StreamField([('heading', 0), ('paragraph', 1), ('image', 2), ('embed', 3), ('hr', 4), ('html', 5)], block_lookup={0: ('home.blocks.H2HeadingBlock', (), {'form_classname': 'full title'}), 1: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link']}), 2: ('wagtail.images.blocks.ImageChooserBlock', (), {}), 3: ('home.blocks.ValidatingEmbedBlock', (), {}), 4: ('home.blocks.HorizontalRuleBlock', (), {}), 5: ('wagtail.blocks.RawHTMLBlock', (), {'help_text': '僅限信任來源的 blockquote/iframe 原始碼'})})), + ('trending', models.BooleanField(default=False, help_text='在熱門區塊顯示', verbose_name='Trending')), + ('banner_image', models.ForeignKey(blank=True, help_text='文章內文橫幅圖片', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')), + ('cover_image', models.ForeignKey(blank=True, help_text='列表封面圖', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image')), + ], + options={ + 'abstract': False, + }, + bases=('wagtailcore.page',), + ), + migrations.CreateModel( + name='ArticlePageTag', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('content_object', modelcluster.fields.ParentalKey(on_delete=django.db.models.deletion.CASCADE, related_name='tagged_items', to='home.articlepage')), + ('tag', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_items', to='taggit.tag')), + ], + options={ + 'abstract': False, + }, + ), + migrations.AddField( + model_name='articlepage', + name='tags', + field=modelcluster.contrib.taggit.ClusterTaggableManager(blank=True, help_text='A comma-separated list of tags.', through='home.ArticlePageTag', to='taggit.Tag', verbose_name='Tags'), + ), + ] diff --git a/innovedus_cms/home/migrations/0004_latestpage_recommandedpage.py b/innovedus_cms/home/migrations/0004_latestpage_recommandedpage.py deleted file mode 100644 index 50bdb38..0000000 --- a/innovedus_cms/home/migrations/0004_latestpage_recommandedpage.py +++ /dev/null @@ -1,35 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-17 07:28 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0003_articlepage_categorypage'), - ('wagtailcore', '0095_groupsitepermission'), - ] - - operations = [ - migrations.CreateModel( - name='LatestPage', - fields=[ - ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')), - ], - options={ - 'abstract': False, - }, - bases=('wagtailcore.page',), - ), - migrations.CreateModel( - name='RecommandedPage', - fields=[ - ('page_ptr', models.OneToOneField(auto_created=True, on_delete=django.db.models.deletion.CASCADE, parent_link=True, primary_key=True, serialize=False, to='wagtailcore.page')), - ], - options={ - 'abstract': False, - }, - bases=('wagtailcore.page',), - ), - ] diff --git a/innovedus_cms/home/migrations/0005_rename_recommandedpage_recommendedpage.py b/innovedus_cms/home/migrations/0005_rename_recommandedpage_recommendedpage.py deleted file mode 100644 index 738ab54..0000000 --- a/innovedus_cms/home/migrations/0005_rename_recommandedpage_recommendedpage.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-17 07:36 - -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0004_latestpage_recommandedpage'), - ('wagtailcore', '0095_groupsitepermission'), - ] - - operations = [ - migrations.RenameModel( - old_name='RecommandedPage', - new_name='RecommendedPage', - ), - ] diff --git a/innovedus_cms/home/migrations/0006_articlepage_cover_image_articlepage_recommended.py b/innovedus_cms/home/migrations/0006_articlepage_cover_image_articlepage_recommended.py deleted file mode 100644 index ab23371..0000000 --- a/innovedus_cms/home/migrations/0006_articlepage_cover_image_articlepage_recommended.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-17 07:50 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0005_rename_recommandedpage_recommendedpage'), - ('wagtailimages', '0027_image_description'), - ] - - operations = [ - migrations.AddField( - model_name='articlepage', - name='cover_image', - field=models.ForeignKey(blank=True, help_text='文章列表與分享用的首圖', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image'), - ), - migrations.AddField( - model_name='articlepage', - name='recommended', - field=models.BooleanField(default=False, help_text='在推薦清單顯示'), - ), - ] diff --git a/innovedus_cms/home/migrations/0007_articlepage_banner_image_alter_articlepage_body.py b/innovedus_cms/home/migrations/0007_articlepage_banner_image_alter_articlepage_body.py deleted file mode 100644 index 895da35..0000000 --- a/innovedus_cms/home/migrations/0007_articlepage_banner_image_alter_articlepage_body.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-29 06:25 - -import django.db.models.deletion -import wagtail.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0006_articlepage_cover_image_articlepage_recommended'), - ('wagtailimages', '0027_image_description'), - ] - - operations = [ - migrations.AddField( - model_name='articlepage', - name='banner_image', - field=models.ForeignKey(blank=True, help_text='文章頁頂部橫幅圖片', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image'), - ), - migrations.AlterField( - model_name='articlepage', - name='body', - field=wagtail.fields.StreamField([('heading', 0), ('paragraph', 1), ('image', 2), ('embed', 3), ('hr', 4), ('html', 5)], block_lookup={0: ('home.blocks.H2HeadingBlock', (), {'form_classname': 'full title'}), 1: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link', 'ol', 'ul']}), 2: ('wagtail.images.blocks.ImageChooserBlock', (), {}), 3: ('home.blocks.ValidatingEmbedBlock', (), {}), 4: ('home.blocks.HorizontalRuleBlock', (), {}), 5: ('wagtail.blocks.RawHTMLBlock', (), {'help_text': '僅限信任來源的 blockquote/iframe 原始碼'})}), - ), - ] diff --git a/innovedus_cms/home/migrations/0008_alter_articlepage_banner_image_and_more.py b/innovedus_cms/home/migrations/0008_alter_articlepage_banner_image_and_more.py deleted file mode 100644 index dc0048a..0000000 --- a/innovedus_cms/home/migrations/0008_alter_articlepage_banner_image_and_more.py +++ /dev/null @@ -1,36 +0,0 @@ -# Generated by Django 5.2.7 on 2025-10-29 09:33 - -import django.db.models.deletion -import wagtail.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0007_articlepage_banner_image_alter_articlepage_body'), - ('wagtailimages', '0027_image_description'), - ] - - operations = [ - migrations.AlterField( - model_name='articlepage', - name='banner_image', - field=models.ForeignKey(blank=True, help_text='文章內文橫幅圖片', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image'), - ), - migrations.AlterField( - model_name='articlepage', - name='body', - field=wagtail.fields.StreamField([('heading', 0), ('paragraph', 1), ('image', 2), ('embed', 3), ('hr', 4), ('html', 5)], block_lookup={0: ('home.blocks.H2HeadingBlock', (), {'form_classname': 'full title'}), 1: ('wagtail.blocks.RichTextBlock', (), {'features': ['bold', 'italic', 'link']}), 2: ('wagtail.images.blocks.ImageChooserBlock', (), {}), 3: ('home.blocks.ValidatingEmbedBlock', (), {}), 4: ('home.blocks.HorizontalRuleBlock', (), {}), 5: ('wagtail.blocks.RawHTMLBlock', (), {'help_text': '僅限信任來源的 blockquote/iframe 原始碼'})}), - ), - migrations.AlterField( - model_name='articlepage', - name='cover_image', - field=models.ForeignKey(blank=True, help_text='列表封面圖', null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to='wagtailimages.image'), - ), - migrations.AlterField( - model_name='articlepage', - name='recommended', - field=models.BooleanField(default=False, help_text='在推薦區塊顯示'), - ), - ] diff --git a/innovedus_cms/home/migrations/0009_articlepagetag_articlepage_tags.py b/innovedus_cms/home/migrations/0009_articlepagetag_articlepage_tags.py deleted file mode 100644 index fa7e80b..0000000 --- a/innovedus_cms/home/migrations/0009_articlepagetag_articlepage_tags.py +++ /dev/null @@ -1,59 +0,0 @@ -import django.db.models.deletion -import modelcluster.contrib.taggit -import modelcluster.fields -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("home", "0008_alter_articlepage_banner_image_and_more"), - ("taggit", "0004_alter_taggeditem_content_type_alter_taggeditem_tag"), - ] - - operations = [ - migrations.CreateModel( - name="ArticlePageTag", - fields=[ - ( - "id", - models.AutoField( - auto_created=True, - primary_key=True, - serialize=False, - verbose_name="ID", - ), - ), - ( - "content_object", - modelcluster.fields.ParentalKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="tagged_items", - to="home.articlepage", - ), - ), - ( - "tag", - models.ForeignKey( - on_delete=django.db.models.deletion.CASCADE, - related_name="home_articlepagetag_items", - to="taggit.tag", - ), - ), - ], - options={ - "abstract": False, - }, - ), - migrations.AddField( - model_name="articlepage", - name="tags", - field=modelcluster.contrib.taggit.ClusterTaggableManager( - blank=True, - help_text="A comma-separated list of tags.", - through="home.ArticlePageTag", - to="taggit.Tag", - verbose_name="Tags", - ), - ), - ] diff --git a/innovedus_cms/home/migrations/0010_alter_articlepage_recommended.py b/innovedus_cms/home/migrations/0010_alter_articlepage_recommended.py deleted file mode 100644 index 9a6c2a6..0000000 --- a/innovedus_cms/home/migrations/0010_alter_articlepage_recommended.py +++ /dev/null @@ -1,20 +0,0 @@ -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ("home", "0009_articlepagetag_articlepage_tags"), - ] - - operations = [ - migrations.AlterField( - model_name="articlepage", - name="recommended", - field=models.BooleanField( - default=False, - help_text="在熱門區塊顯示", - verbose_name="Trending", - ), - ), - ] diff --git a/innovedus_cms/home/migrations/0011_rename_recommendedpage_trendingpage.py b/innovedus_cms/home/migrations/0011_rename_recommendedpage_trendingpage.py deleted file mode 100644 index 87b487f..0000000 --- a/innovedus_cms/home/migrations/0011_rename_recommendedpage_trendingpage.py +++ /dev/null @@ -1,15 +0,0 @@ -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ("home", "0010_alter_articlepage_recommended"), - ] - - operations = [ - migrations.RenameModel( - old_name="RecommendedPage", - new_name="TrendingPage", - ), - ] diff --git a/innovedus_cms/home/migrations/0012_rename_recommended_articlepage_trending_and_more.py b/innovedus_cms/home/migrations/0012_rename_recommended_articlepage_trending_and_more.py deleted file mode 100644 index 2a4b86e..0000000 --- a/innovedus_cms/home/migrations/0012_rename_recommended_articlepage_trending_and_more.py +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Django 5.2.7 on 2025-11-06 04:04 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0011_rename_recommendedpage_trendingpage'), - ('taggit', '0006_rename_taggeditem_content_type_object_id_taggit_tagg_content_8fc721_idx'), - ] - - operations = [ - migrations.RenameField( - model_name='articlepage', - old_name='recommended', - new_name='trending', - ), - migrations.AlterField( - model_name='articlepagetag', - name='id', - field=models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), - ), - migrations.AlterField( - model_name='articlepagetag', - name='tag', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_items', to='taggit.tag'), - ), - ] diff --git a/innovedus_cms/home/migrations/0013_alter_articlepage_date.py b/innovedus_cms/home/migrations/0013_alter_articlepage_date.py deleted file mode 100644 index cdb39a9..0000000 --- a/innovedus_cms/home/migrations/0013_alter_articlepage_date.py +++ /dev/null @@ -1,46 +0,0 @@ -# Generated by Django 5.2.7 on 2025-11-10 05:37 - -import datetime as dt - -from django.conf import settings -from django.db import migrations, models -from django.utils import timezone - - -def normalize_article_dates(apps, schema_editor): - ArticlePage = apps.get_model("home", "ArticlePage") - - for page in ArticlePage.objects.all(): - if page.date is None: - continue - - value = page.date - if isinstance(value, dt.datetime): - base = value - elif isinstance(value, dt.date): - base = dt.datetime.combine(value, dt.time.min) - else: - continue - - if settings.USE_TZ and timezone.is_naive(base): - base = timezone.make_aware(base, timezone.get_default_timezone()) - - normalized = base.replace(hour=0, minute=0, second=0, microsecond=0) - if normalized != page.date: - ArticlePage.objects.filter(pk=page.pk).update(date=normalized) - - -class Migration(migrations.Migration): - - dependencies = [ - ('home', '0012_rename_recommended_articlepage_trending_and_more'), - ] - - operations = [ - migrations.AlterField( - model_name='articlepage', - name='date', - field=models.DateTimeField(verbose_name='Published date'), - ), - migrations.RunPython(normalize_article_dates, migrations.RunPython.noop), - ]