Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
"""Normalize segment status enum values

Revision ID: 9a7b6c5d4e3f
Revises: f2b7c9d1e4a6
Create Date: 2026-07-10 11:25:00.000000

"""
from alembic import op
import sqlalchemy as sa


revision = "9a7b6c5d4e3f"
down_revision = "f2b7c9d1e4a6"
branch_labels = None
depends_on = None


def _rename_segment_status_values(pairs: list[tuple[str, str]]) -> None:
conn = op.get_bind()
for old_value, new_value in pairs:
conn.execute(
sa.text(
"""
DO $$
BEGIN
IF EXISTS (
SELECT 1
FROM pg_enum e
JOIN pg_type t ON t.oid = e.enumtypid
WHERE t.typname = 'segment_status_enum'
AND e.enumlabel = :old_value
)
AND NOT EXISTS (
SELECT 1
FROM pg_enum e
JOIN pg_type t ON t.oid = e.enumtypid
WHERE t.typname = 'segment_status_enum'
AND e.enumlabel = :new_value
) THEN
EXECUTE format(
'ALTER TYPE segment_status_enum RENAME VALUE %L TO %L',
:old_value,
:new_value
);
END IF;
END $$;
"""
),
{"old_value": old_value, "new_value": new_value},
)


def upgrade() -> None:
_rename_segment_status_values(
[
("NOT_STARTED", "not_started"),
("IN_PROGRESS", "in_progress"),
("SKIPPED", "skipped"),
("DELIVERED", "delivered"),
("COMPLETED", "completed"),
]
)


def downgrade() -> None:
_rename_segment_status_values(
[
("not_started", "NOT_STARTED"),
("in_progress", "IN_PROGRESS"),
("skipped", "SKIPPED"),
("delivered", "DELIVERED"),
("completed", "COMPLETED"),
]
)
15 changes: 12 additions & 3 deletions backend/app/main.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,18 @@
app.mount("/colorings", StaticFiles(directory=COLORINGS_PATH), name="colorings")
app.mount("/badges", StaticFiles(directory=BADGES_PATH), name="badges")

allowed_origins = os.getenv(
"FRONTEND_URL", "http://localhost:4200,http://127.0.0.1:4200"
).split(",")

def _parse_allowed_origins(raw_origins: str) -> list[str]:
return [
origin.strip().rstrip("/")
for origin in raw_origins.split(",")
if origin.strip()
]


allowed_origins = _parse_allowed_origins(
os.getenv("FRONTEND_URL", "http://localhost:4200,http://127.0.0.1:4200")
)

app.add_middleware(
CORSMiddleware,
Expand Down
13 changes: 9 additions & 4 deletions backend/scripts/reseed_demo.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,15 @@
from pathlib import Path


REPO_ROOT = Path(__file__).resolve().parents[2]
BACKEND_ROOT = REPO_ROOT / "backend"
if str(BACKEND_ROOT) not in sys.path:
sys.path.insert(0, str(BACKEND_ROOT))
SCRIPT_PATH = Path(__file__).resolve()
BACKEND_ROOT_CANDIDATES = (
SCRIPT_PATH.parents[1],
SCRIPT_PATH.parents[2] / "backend",
)
for backend_root in BACKEND_ROOT_CANDIDATES:
if (backend_root / "app").exists() and str(backend_root) not in sys.path:
sys.path.insert(0, str(backend_root))
break

from app import seed_demo # noqa: E402
from app import seed_v2_demo # noqa: E402
Expand Down
Loading