feat: Implement initial setup functionality with admin elevation and system settings management

This commit is contained in:
Christian Krakau-Louis
2025-04-16 11:29:52 +02:00
parent 254853f08e
commit 61a0a0a6a6
5 changed files with 388 additions and 2 deletions
+20 -1
View File
@@ -9,7 +9,7 @@ from sqlalchemy import inspect
from sqlalchemy.orm import Session
from passlib.context import CryptContext
from .models import User, Team, TeamMembership, QRCode, QRSet, TeamAchievement, Event
from .models import User, Team, TeamMembership, QRCode, QRSet, TeamAchievement, Event, SystemSettings
from .db import SessionLocal, engine
from .db_migrations import run_migrations
@@ -35,6 +35,25 @@ def init_db():
run_migrations(engine)
# Then proceed with seeding if needed
seed_db()
# Initialize system settings if needed
init_system_settings()
def init_system_settings():
"""Initialize the system settings table if it doesn't exist."""
db = SessionLocal()
try:
# Check if there's already a system settings record
settings = db.query(SystemSettings).first()
if not settings:
# Create initial system settings with setup_completed = False
settings = SystemSettings(setup_completed=False)
db.add(settings)
db.commit()
print("System settings initialized.")
except Exception as e:
print(f"Error initializing system settings: {e}")
finally:
db.close()
def seed_db():
"""Seed the database with test data."""