feat: deploy infrastructure + disk/drive, calendar, presentation, workspaces, onboarding, demo user
This commit is contained in:
+27
-1
@@ -1,18 +1,22 @@
|
||||
"""Seed data for VoIdeaAI.
|
||||
|
||||
Called from app lifespan when DB tables are empty.
|
||||
Creates default tariff plans and sets system owner by email.
|
||||
Creates default tariff plans, demo user, and sets system owner by email.
|
||||
"""
|
||||
|
||||
import json
|
||||
from datetime import datetime, timezone
|
||||
from pathlib import Path
|
||||
from uuid import uuid4
|
||||
|
||||
from sqlalchemy import select
|
||||
from sqlalchemy.ext.asyncio import AsyncSession
|
||||
|
||||
from app.core.config import get_settings
|
||||
from app.core.security import get_password_hash
|
||||
from app.models.agent import AgentConfig
|
||||
from app.models.tariff import TariffPlan
|
||||
from app.models.user import User
|
||||
from app.services.user_service import UserService
|
||||
|
||||
settings = get_settings()
|
||||
@@ -60,6 +64,7 @@ async def seed_database(db: AsyncSession) -> None:
|
||||
"""Seed initial data if tables are empty."""
|
||||
await _seed_tariff_plans(db)
|
||||
await _seed_agent_descriptions(db)
|
||||
await _seed_demo_user(db)
|
||||
await _seed_owner(db)
|
||||
|
||||
|
||||
@@ -118,6 +123,27 @@ async def _seed_agent_descriptions(db: AsyncSession) -> None:
|
||||
await db.commit()
|
||||
|
||||
|
||||
async def _seed_demo_user(db: AsyncSession) -> None:
|
||||
"""Create demo@voidea.app / demo1234 if not exists."""
|
||||
result = await db.execute(select(User).where(User.email == "demo@voidea.app"))
|
||||
if result.scalar_one_or_none():
|
||||
return
|
||||
|
||||
demo = User(
|
||||
id=uuid4(),
|
||||
email="demo@voidea.app",
|
||||
password_hash=get_password_hash("demo1234"),
|
||||
display_name="Demo User",
|
||||
is_active=True,
|
||||
is_superuser=True,
|
||||
role="admin",
|
||||
accepted_terms_at=datetime.now(timezone.utc),
|
||||
accepted_terms_version=settings.accepted_terms_version,
|
||||
)
|
||||
db.add(demo)
|
||||
await db.commit()
|
||||
|
||||
|
||||
async def _seed_owner(db: AsyncSession) -> None:
|
||||
"""Set system owner by SYSTEM_OWNER_EMAIL if configured."""
|
||||
if not settings.system_owner_email:
|
||||
|
||||
Reference in New Issue
Block a user