diff --git a/__pycache__/app.cpython-313.pyc b/__pycache__/app.cpython-313.pyc index a6375f7..0543c20 100644 Binary files a/__pycache__/app.cpython-313.pyc and b/__pycache__/app.cpython-313.pyc differ diff --git a/app.py b/app.py index 4670368..dffaac6 100644 --- a/app.py +++ b/app.py @@ -2026,6 +2026,7 @@ def admin_update_database(): def get_mindmap_node(node_id): """Liefert die Mindmap-Daten für einen bestimmten Knoten und seine Subthemen.""" try: + # Erkennen besonderer Knotennamen if node_id == 'root': # Hauptknoten (Wissen) abrufen wissen_node = MindMapNode.query.filter_by(name="Wissen").first() @@ -2041,11 +2042,39 @@ def get_mindmap_node(node_id): # Alle direkten Kinder des Wissen-Knotens holen nodes = wissen_node.children.all() - else: + parent_node = wissen_node + elif node_id.isdigit(): # Bestimmten Knoten und seine Kinder abrufen - parent_node = MindMapNode.query.get_or_404(node_id) + parent_node = MindMapNode.query.get_or_404(int(node_id)) + nodes = parent_node.children.all() + else: + # Versuche, einen Knoten mit diesem Namen zu finden + parent_node = MindMapNode.query.filter_by(name=node_id.capitalize()).first() + + if not parent_node: + # Versuche, eine Kategorie mit diesem Namen zu finden + category = Category.query.filter(func.lower(Category.name) == func.lower(node_id)).first() + if category: + # Finde oder erstelle einen Knoten für diese Kategorie + parent_node = MindMapNode.query.filter_by(category_id=category.id).first() + if not parent_node: + parent_node = MindMapNode( + name=category.name, + description=category.description, + color_code=category.color_code, + category_id=category.id, + is_public=True + ) + db.session.add(parent_node) + db.session.commit() + + if not parent_node: + # Fallback zum Wissen-Knoten + parent_node = MindMapNode.query.filter_by(name="Wissen").first() + if not parent_node: + return jsonify({'error': 'Knoten nicht gefunden'}), 404 + nodes = parent_node.children.all() - wissen_node = parent_node # Ergebnisdaten vorbereiten nodes_data = [] @@ -2053,10 +2082,10 @@ def get_mindmap_node(node_id): # Hauptknoten hinzufügen nodes_data.append({ - 'id': wissen_node.id, - 'name': wissen_node.name, - 'description': wissen_node.description or '', - 'color_code': wissen_node.color_code or '#4299E1', + 'id': parent_node.id, + 'name': parent_node.name, + 'description': parent_node.description or '', + 'color_code': parent_node.color_code or '#4299E1', 'is_center': True, 'has_children': len(nodes) > 0 }) @@ -2074,7 +2103,7 @@ def get_mindmap_node(node_id): # Verbindung zum Elternknoten hinzufügen edges_data.append({ - 'source_id': wissen_node.id, + 'source_id': parent_node.id, 'target_id': node.id, 'strength': 0.8 }) @@ -2086,6 +2115,8 @@ def get_mindmap_node(node_id): except Exception as e: print(f"Fehler beim Abrufen der Mindmap-Daten: {str(e)}") + import traceback + traceback.print_exc() return jsonify({ 'success': False, 'error': 'Mindmap-Daten konnten nicht geladen werden' diff --git a/utils/__pycache__/db_fix.cpython-313.pyc b/utils/__pycache__/db_fix.cpython-313.pyc index f60885b..ad2e955 100644 Binary files a/utils/__pycache__/db_fix.cpython-313.pyc and b/utils/__pycache__/db_fix.cpython-313.pyc differ diff --git a/utils/db_fix.py b/utils/db_fix.py index 2271457..6120092 100644 --- a/utils/db_fix.py +++ b/utils/db_fix.py @@ -11,19 +11,33 @@ import importlib.util parent_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) sys.path.insert(0, parent_dir) -from app import app, db_path +# Direkt den Datenbankpfad berechnen, statt ihn aus app.py zu importieren +def get_db_path(): + """Berechnet den absoluten Pfad zur Datenbank""" + basedir = os.path.abspath(os.path.dirname(os.path.dirname(__file__))) + return os.path.join(basedir, 'database', 'systades.db') + +# Import models direkt from models import db def ensure_db_dir(): """Make sure the database directory exists.""" + db_path = get_db_path() os.makedirs(os.path.dirname(db_path), exist_ok=True) def fix_database_schema(): """Fix the database schema by adding missing columns.""" + # Import Flask-App erst innerhalb der Funktion + from flask import Flask + from app import app + with app.app_context(): # Ensure directory exists ensure_db_dir() + # Get database path + db_path = get_db_path() + # Check if database exists, create tables if needed if not os.path.exists(db_path): print("Database doesn't exist. Creating all tables from scratch...")