🎉 Refactored backend structure: Removed unused files including app_cleaned.py, admin_api.py, admin.py, user.py, and others. Updated settings.local.json to include additional Bash commands. Enhanced admin templates for better navigation and functionality. Improved logging and error handling across various modules.
This commit is contained in:
83
backend/utils/migrate_user_settings.py
Normal file
83
backend/utils/migrate_user_settings.py
Normal file
@@ -0,0 +1,83 @@
|
||||
#!/usr/bin/env python3.11
|
||||
"""
|
||||
Migrations-Skript für Benutzereinstellungen
|
||||
Fügt neue Spalten zur users-Tabelle hinzu für erweiterte Benutzereinstellungen.
|
||||
|
||||
Autor: MYP Team
|
||||
Datum: 2025-06-09
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from sqlalchemy import text, inspect
|
||||
from models import get_db_session, engine
|
||||
from utils.logging_config import get_logger
|
||||
|
||||
logger = get_logger("migration")
|
||||
|
||||
def check_column_exists(table_name: str, column_name: str) -> bool:
|
||||
"""Prüft, ob eine Spalte in einer Tabelle existiert"""
|
||||
try:
|
||||
inspector = inspect(engine)
|
||||
columns = [col['name'] for col in inspector.get_columns(table_name)]
|
||||
return column_name in columns
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler beim Prüfen der Spalte {column_name}: {e}")
|
||||
return False
|
||||
|
||||
def add_user_settings_columns():
|
||||
"""Fügt die neuen Benutzereinstellungs-Spalten hinzu"""
|
||||
session = get_db_session()
|
||||
|
||||
# Neue Spalten definieren
|
||||
new_columns = [
|
||||
("theme_preference", "VARCHAR(20) DEFAULT 'auto'"),
|
||||
("language_preference", "VARCHAR(10) DEFAULT 'de'"),
|
||||
("email_notifications", "BOOLEAN DEFAULT 1"),
|
||||
("browser_notifications", "BOOLEAN DEFAULT 1"),
|
||||
("dashboard_layout", "VARCHAR(20) DEFAULT 'default'"),
|
||||
("compact_mode", "BOOLEAN DEFAULT 0"),
|
||||
("show_completed_jobs", "BOOLEAN DEFAULT 1"),
|
||||
("auto_refresh_interval", "INTEGER DEFAULT 30"),
|
||||
("auto_logout_timeout", "INTEGER DEFAULT 0")
|
||||
]
|
||||
|
||||
try:
|
||||
for column_name, column_definition in new_columns:
|
||||
if not check_column_exists('users', column_name):
|
||||
logger.info(f"Füge Spalte {column_name} zur users-Tabelle hinzu...")
|
||||
|
||||
# SQLite-kompatible ALTER TABLE Syntax
|
||||
sql = f"ALTER TABLE users ADD COLUMN {column_name} {column_definition}"
|
||||
session.execute(text(sql))
|
||||
session.commit()
|
||||
|
||||
logger.info(f"Spalte {column_name} erfolgreich hinzugefügt")
|
||||
else:
|
||||
logger.info(f"Spalte {column_name} existiert bereits")
|
||||
|
||||
logger.info("Migration der Benutzereinstellungen erfolgreich abgeschlossen")
|
||||
|
||||
except Exception as e:
|
||||
logger.error(f"Fehler bei der Migration: {e}")
|
||||
session.rollback()
|
||||
raise e
|
||||
finally:
|
||||
session.close()
|
||||
|
||||
def main():
|
||||
"""Hauptfunktion für die Migration"""
|
||||
try:
|
||||
logger.info("Starte Migration der Benutzereinstellungen...")
|
||||
add_user_settings_columns()
|
||||
logger.info("Migration erfolgreich abgeschlossen")
|
||||
return True
|
||||
except Exception as e:
|
||||
logger.error(f"Migration fehlgeschlagen: {e}")
|
||||
return False
|
||||
|
||||
if __name__ == "__main__":
|
||||
success = main()
|
||||
sys.exit(0 if success else 1)
|
Reference in New Issue
Block a user