feat: add platform detail/edit admin UI and service enhancements
- 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>
This commit is contained in:
@@ -178,9 +178,7 @@ def upgrade() -> None:
|
||||
""")
|
||||
)
|
||||
|
||||
# Get the OMS platform ID
|
||||
result = conn.execute(sa.text("SELECT id FROM platforms WHERE code = 'oms'"))
|
||||
oms_platform_id = result.fetchone()[0]
|
||||
I dn
|
||||
|
||||
# =========================================================================
|
||||
# 6. Backfill content_pages with platform_id
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
"""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,
|
||||
)
|
||||
Reference in New Issue
Block a user