chore: Änderungen commited
This commit is contained in:
62
app.py
62
app.py
@@ -5,6 +5,7 @@ import os
|
||||
import logging
|
||||
import traceback
|
||||
from datetime import datetime, timedelta, timezone
|
||||
from functools import wraps
|
||||
from flask import Flask, render_template, request, redirect, url_for, flash, jsonify, session, g
|
||||
from flask_login import LoginManager, UserMixin, login_user, logout_user, login_required, current_user
|
||||
from flask_sqlalchemy import SQLAlchemy
|
||||
@@ -1710,20 +1711,78 @@ def get_dark_mode():
|
||||
# Fehlerhandler
|
||||
@app.errorhandler(404)
|
||||
def page_not_found(e):
|
||||
"""404 Fehler - Seite nicht gefunden"""
|
||||
ErrorHandler.log_exception(e, code=404)
|
||||
is_api_request = request.path.startswith('/api/')
|
||||
|
||||
if is_api_request:
|
||||
return ErrorHandler.api_error("Die angeforderte Ressource wurde nicht gefunden.", 404)
|
||||
return render_template('errors/404.html'), 404
|
||||
|
||||
@app.errorhandler(403)
|
||||
def forbidden(e):
|
||||
"""403 Fehler - Zugriff verweigert"""
|
||||
ErrorHandler.log_exception(e, code=403)
|
||||
is_api_request = request.path.startswith('/api/')
|
||||
|
||||
if is_api_request:
|
||||
return ErrorHandler.api_error("Sie haben keine Berechtigung, auf diese Ressource zuzugreifen.", 403)
|
||||
return render_template('errors/403.html'), 403
|
||||
|
||||
@app.errorhandler(500)
|
||||
def internal_server_error(e):
|
||||
"""500 Fehler - Interner Serverfehler"""
|
||||
ErrorHandler.log_exception(e, code=500)
|
||||
is_api_request = request.path.startswith('/api/')
|
||||
|
||||
if is_api_request:
|
||||
return ErrorHandler.api_error("Ein interner Serverfehler ist aufgetreten.", 500)
|
||||
return render_template('errors/500.html'), 500
|
||||
|
||||
@app.errorhandler(429)
|
||||
def too_many_requests(e):
|
||||
"""429 Fehler - Zu viele Anfragen"""
|
||||
ErrorHandler.log_exception(e, code=429)
|
||||
is_api_request = request.path.startswith('/api/')
|
||||
|
||||
if is_api_request:
|
||||
return ErrorHandler.api_error("Zu viele Anfragen. Bitte versuchen Sie es später erneut.", 429)
|
||||
return render_template('errors/429.html'), 429
|
||||
|
||||
@app.errorhandler(400)
|
||||
def bad_request(e):
|
||||
"""400 Fehler - Ungültige Anfrage"""
|
||||
ErrorHandler.log_exception(e, code=400)
|
||||
is_api_request = request.path.startswith('/api/')
|
||||
|
||||
if is_api_request:
|
||||
return ErrorHandler.api_error("Die Anfrage konnte nicht verarbeitet werden.", 400)
|
||||
flash("Die Anfrage konnte nicht verarbeitet werden. Bitte überprüfen Sie Ihre Eingaben.", "error")
|
||||
return render_template('errors/400.html', error=str(e)), 400
|
||||
|
||||
@app.errorhandler(401)
|
||||
def unauthorized(e):
|
||||
"""401 Fehler - Nicht autorisiert"""
|
||||
ErrorHandler.log_exception(e, code=401)
|
||||
is_api_request = request.path.startswith('/api/')
|
||||
|
||||
if is_api_request:
|
||||
return ErrorHandler.api_error("Authentifizierung erforderlich.", 401)
|
||||
flash("Sie müssen sich anmelden, um auf diese Seite zuzugreifen.", "error")
|
||||
return redirect(url_for('login'))
|
||||
|
||||
# Hilfsfunktion zur Fehlerbehandlung in API-Endpunkten
|
||||
def handle_api_exception(func):
|
||||
"""Decorator für API-Endpunkte zur einheitlichen Fehlerbehandlung"""
|
||||
@wraps(func)
|
||||
def wrapper(*args, **kwargs):
|
||||
try:
|
||||
return func(*args, **kwargs)
|
||||
except Exception as e:
|
||||
# Log und API-Fehler zurückgeben
|
||||
return ErrorHandler.handle_exception(e, is_api_request=True)
|
||||
return wrapper
|
||||
|
||||
# OpenAI-Integration für KI-Assistenz
|
||||
@app.route('/api/assistant', methods=['POST'])
|
||||
def chat_with_assistant():
|
||||
@@ -2383,6 +2442,7 @@ def get_public_mindmap_nodes():
|
||||
|
||||
# Suchfunktion für Mindmap-Knoten
|
||||
@app.route('/api/search/mindmap', methods=['GET'])
|
||||
@handle_api_exception
|
||||
def search_mindmap_nodes():
|
||||
"""
|
||||
Durchsucht Mindmap-Knoten nach einem Suchbegriff.
|
||||
@@ -2489,6 +2549,7 @@ def search_mindmap_nodes():
|
||||
# Export/Import-Funktionen für Mindmaps
|
||||
@app.route('/api/mindmap/<int:mindmap_id>/export', methods=['GET'])
|
||||
@login_required
|
||||
@handle_api_exception
|
||||
def export_mindmap(mindmap_id):
|
||||
"""
|
||||
Exportiert eine Mindmap im angegebenen Format.
|
||||
@@ -2620,6 +2681,7 @@ def export_mindmap(mindmap_id):
|
||||
|
||||
@app.route('/api/mindmap/<int:mindmap_id>/import', methods=['POST'])
|
||||
@login_required
|
||||
@handle_api_exception
|
||||
def import_mindmap(mindmap_id):
|
||||
"""
|
||||
Importiert Daten in eine bestehende Mindmap.
|
||||
|
||||
Reference in New Issue
Block a user