Improve demo seed
This commit is contained in:
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user