- Add platform detail and edit admin pages with templates and JS - Add ContentPageService methods: list_all_platform_pages, list_all_vendor_defaults - Deprecate /admin/platform-homepage route (redirects to /admin/platforms) - Add migration to fix content_page nullable columns - Refine platform and vendor context middleware - Add platform context middleware unit tests - Update platforms.js with improved functionality - Add section-based homepage plan documentation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
116 lines
2.4 KiB
Python
116 lines
2.4 KiB
Python
"""Fix content_page nullable boolean columns
|
|
|
|
Revision ID: z7h8i9j0k1l2
|
|
Revises: z6g7h8i9j0k1
|
|
Create Date: 2026-01-20
|
|
|
|
This migration:
|
|
1. Sets NULL values to defaults for boolean and integer columns
|
|
2. Alters columns to be NOT NULL
|
|
"""
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
|
|
# revision identifiers, used by Alembic.
|
|
revision = "z7h8i9j0k1l2"
|
|
down_revision = "z6g7h8i9j0k1"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
# First, update any NULL values to defaults
|
|
op.execute("""
|
|
UPDATE content_pages
|
|
SET display_order = 0
|
|
WHERE display_order IS NULL
|
|
""")
|
|
|
|
op.execute("""
|
|
UPDATE content_pages
|
|
SET show_in_footer = true
|
|
WHERE show_in_footer IS NULL
|
|
""")
|
|
|
|
op.execute("""
|
|
UPDATE content_pages
|
|
SET show_in_header = false
|
|
WHERE show_in_header IS NULL
|
|
""")
|
|
|
|
op.execute("""
|
|
UPDATE content_pages
|
|
SET show_in_legal = false
|
|
WHERE show_in_legal IS NULL
|
|
""")
|
|
|
|
# Now alter columns to be NOT NULL
|
|
op.alter_column(
|
|
"content_pages",
|
|
"display_order",
|
|
existing_type=sa.Integer(),
|
|
nullable=False,
|
|
server_default="0",
|
|
)
|
|
|
|
op.alter_column(
|
|
"content_pages",
|
|
"show_in_footer",
|
|
existing_type=sa.Boolean(),
|
|
nullable=False,
|
|
server_default="true",
|
|
)
|
|
|
|
op.alter_column(
|
|
"content_pages",
|
|
"show_in_header",
|
|
existing_type=sa.Boolean(),
|
|
nullable=False,
|
|
server_default="false",
|
|
)
|
|
|
|
op.alter_column(
|
|
"content_pages",
|
|
"show_in_legal",
|
|
existing_type=sa.Boolean(),
|
|
nullable=False,
|
|
server_default="false",
|
|
)
|
|
|
|
|
|
def downgrade() -> None:
|
|
# Revert columns to nullable (no server default)
|
|
op.alter_column(
|
|
"content_pages",
|
|
"display_order",
|
|
existing_type=sa.Integer(),
|
|
nullable=True,
|
|
server_default=None,
|
|
)
|
|
|
|
op.alter_column(
|
|
"content_pages",
|
|
"show_in_footer",
|
|
existing_type=sa.Boolean(),
|
|
nullable=True,
|
|
server_default=None,
|
|
)
|
|
|
|
op.alter_column(
|
|
"content_pages",
|
|
"show_in_header",
|
|
existing_type=sa.Boolean(),
|
|
nullable=True,
|
|
server_default=None,
|
|
)
|
|
|
|
op.alter_column(
|
|
"content_pages",
|
|
"show_in_legal",
|
|
existing_type=sa.Boolean(),
|
|
nullable=True,
|
|
server_default=None,
|
|
)
|