"feat: Update documentation and fix issues in various files"
This commit is contained in:
@@ -10,7 +10,7 @@ from flask_wtf.csrf import CSRFError
|
||||
from werkzeug.utils import secure_filename
|
||||
from werkzeug.security import generate_password_hash, check_password_hash
|
||||
from sqlalchemy.orm import sessionmaker, joinedload
|
||||
from sqlalchemy import func
|
||||
from sqlalchemy import func, text
|
||||
from functools import wraps
|
||||
from concurrent.futures import ThreadPoolExecutor, as_completed
|
||||
from typing import List, Dict, Tuple
|
||||
@@ -134,10 +134,56 @@ login_manager.login_message_category = "info"
|
||||
|
||||
@login_manager.user_loader
|
||||
def load_user(user_id):
|
||||
db_session = get_db_session()
|
||||
user = db_session.query(User).filter(User.id == user_id).first()
|
||||
db_session.close()
|
||||
return user
|
||||
"""
|
||||
Robuster User-Loader mit Error-Handling für Schema-Probleme.
|
||||
"""
|
||||
try:
|
||||
db_session = get_db_session()
|
||||
|
||||
# Robuste Abfrage mit Error-Handling
|
||||
try:
|
||||
user = db_session.query(User).filter(User.id == user_id).first()
|
||||
db_session.close()
|
||||
return user
|
||||
except Exception as db_error:
|
||||
# Schema-Problem - versuche manuelle Abfrage
|
||||
app_logger.warning(f"Schema-Problem beim User-Load für ID {user_id}: {str(db_error)}")
|
||||
|
||||
# Manuelle Abfrage nur mit Basis-Feldern
|
||||
try:
|
||||
result = db_session.execute(
|
||||
text("SELECT id, email, password_hash, name, role, active FROM users WHERE id = :user_id"),
|
||||
{"user_id": user_id}
|
||||
).fetchone()
|
||||
|
||||
if result:
|
||||
# Manuell User-Objekt erstellen
|
||||
user = User()
|
||||
user.id = result[0]
|
||||
user.email = result[1] if len(result) > 1 else f"user_{user_id}@system.local"
|
||||
user.password_hash = result[2] if len(result) > 2 else ""
|
||||
user.name = result[3] if len(result) > 3 else f"User {user_id}"
|
||||
user.role = result[4] if len(result) > 4 else "user"
|
||||
user.active = result[5] if len(result) > 5 else True
|
||||
|
||||
# Standard-Werte für fehlende Felder
|
||||
user.username = getattr(user, 'username', user.email.split('@')[0])
|
||||
user.created_at = getattr(user, 'created_at', datetime.now())
|
||||
user.last_login = getattr(user, 'last_login', None)
|
||||
user.updated_at = getattr(user, 'updated_at', datetime.now())
|
||||
|
||||
db_session.close()
|
||||
return user
|
||||
|
||||
except Exception as manual_error:
|
||||
app_logger.error(f"Auch manuelle User-Abfrage fehlgeschlagen: {str(manual_error)}")
|
||||
|
||||
db_session.close()
|
||||
return None
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"Kritischer Fehler im User-Loader für ID {user_id}: {str(e)}")
|
||||
return None
|
||||
|
||||
# Jinja2 Context Processors
|
||||
@app.context_processor
|
||||
@@ -230,7 +276,9 @@ def admin_required(f):
|
||||
@wraps(f)
|
||||
@login_required
|
||||
def decorated_function(*args, **kwargs):
|
||||
app_logger.info(f"Admin-Check für Funktion {f.__name__}: User authenticated: {current_user.is_authenticated}, User ID: {current_user.id if current_user.is_authenticated else 'None'}, Is Admin: {current_user.is_admin if current_user.is_authenticated else 'None'}")
|
||||
if not current_user.is_admin:
|
||||
app_logger.warning(f"Admin-Zugriff verweigert für User {current_user.id if current_user.is_authenticated else 'Anonymous'} auf Funktion {f.__name__}")
|
||||
return jsonify({"error": "Nur Administratoren haben Zugriff"}), 403
|
||||
return f(*args, **kwargs)
|
||||
return decorated_function
|
||||
@@ -5111,6 +5159,8 @@ def refresh_dashboard():
|
||||
def get_admin_guest_requests():
|
||||
"""Gibt alle Gastaufträge für Admin-Verwaltung zurück"""
|
||||
try:
|
||||
app_logger.info(f"API-Aufruf /api/admin/guest-requests von User {current_user.id if current_user.is_authenticated else 'Anonymous'}")
|
||||
|
||||
db_session = get_db_session()
|
||||
|
||||
# Parameter auslesen
|
||||
@@ -5194,7 +5244,7 @@ def get_admin_guest_requests():
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
app_logger.error(f"Fehler beim Laden der Admin-Gastaufträge: {str(e)}")
|
||||
app_logger.error(f"Fehler beim Laden der Admin-Gastaufträge: {str(e)}", exc_info=True)
|
||||
return jsonify({
|
||||
'success': False,
|
||||
'message': f'Fehler beim Laden der Gastaufträge: {str(e)}'
|
||||
|
Reference in New Issue
Block a user