"Refactor database connection for improved data consistency (feat"
This commit is contained in:
47
app.py
47
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'
|
||||
|
||||
Reference in New Issue
Block a user