Improve demo seed

This commit is contained in:
Urtzi Alfaro
2025-10-17 07:31:14 +02:00
parent b6cb800758
commit d4060962e4
56 changed files with 8235 additions and 339 deletions

View File

@@ -1,4 +1,5 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
Seed Demo Users
Creates demo user accounts for production demo environment
@@ -18,6 +19,7 @@ from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession, async_sess
from sqlalchemy import select
import structlog
import uuid
import json
logger = structlog.get_logger()
@@ -52,6 +54,22 @@ DEMO_USERS = [
]
def load_staff_users():
"""Load staff users from JSON file"""
json_file = Path(__file__).parent / "usuarios_staff_es.json"
if not json_file.exists():
logger.warning(f"Staff users JSON not found: {json_file}, skipping staff users")
return []
with open(json_file, 'r', encoding='utf-8') as f:
data = json.load(f)
# Combine both individual and central bakery staff
all_staff = data.get("staff_individual_bakery", []) + data.get("staff_central_bakery", [])
logger.info(f"Loaded {len(all_staff)} staff users from JSON")
return all_staff
async def seed_demo_users():
"""Seed demo users into auth database"""
@@ -74,7 +92,17 @@ async def seed_demo_users():
from services.auth.app.models.users import User
from datetime import datetime, timezone
for user_data in DEMO_USERS:
# Load staff users from JSON
staff_users = load_staff_users()
# Combine owner users with staff users
all_users = DEMO_USERS + staff_users
logger.info(f"Seeding {len(all_users)} total users ({len(DEMO_USERS)} owners + {len(staff_users)} staff)")
created_count = 0
skipped_count = 0
for user_data in all_users:
# Check if user already exists
result = await session.execute(
select(User).where(User.email == user_data["email"])
@@ -82,7 +110,8 @@ async def seed_demo_users():
existing_user = result.scalar_one_or_none()
if existing_user:
logger.info(f"Demo user already exists: {user_data['email']}")
logger.debug(f"Demo user already exists: {user_data['email']}")
skipped_count += 1
continue
# Create new demo user
@@ -102,10 +131,11 @@ async def seed_demo_users():
)
session.add(user)
logger.info(f"Created demo user: {user_data['email']}")
created_count += 1
logger.debug(f"Created demo user: {user_data['email']} ({user_data.get('role', 'owner')})")
await session.commit()
logger.info("Demo users seeded successfully")
logger.info(f"Demo users seeded successfully: {created_count} created, {skipped_count} skipped")
return True
except Exception as e: