chore: Änderungen commited
This commit is contained in:
Binary file not shown.
194
app.py
194
app.py
@@ -149,169 +149,6 @@ def create_default_users():
|
|||||||
db.session.commit()
|
db.session.commit()
|
||||||
print(f"{len(users)} Benutzer wurden erstellt.")
|
print(f"{len(users)} Benutzer wurden erstellt.")
|
||||||
|
|
||||||
def create_default_categories():
|
|
||||||
"""Erstellt die Standardkategorien für die Mindmap"""
|
|
||||||
# Hauptkategorien
|
|
||||||
main_categories = [
|
|
||||||
{
|
|
||||||
"name": "Philosophie",
|
|
||||||
# Automatische Datenbankinitialisierung - Aktualisiert für Flask 2.2+ Kompatibilität
|
|
||||||
def initialize_app():
|
|
||||||
"""Initialisierung der Anwendung"""
|
|
||||||
print("Initialisierung der Anwendung...")
|
|
||||||
with app.app_context():
|
|
||||||
# Prüfen, ob die Datenbank existiert und initialisiert ist
|
|
||||||
try:
|
|
||||||
# Prüfen, ob Tabellen existieren
|
|
||||||
db.create_all()
|
|
||||||
|
|
||||||
# Prüfen, ob Stammdaten vorhanden sind
|
|
||||||
if User.query.count() == 0:
|
|
||||||
print("Erstelle Standardbenutzer...")
|
|
||||||
create_default_users()
|
|
||||||
|
|
||||||
if Category.query.count() == 0:
|
|
||||||
print("Erstelle Standardkategorien...")
|
|
||||||
create_default_categories()
|
|
||||||
|
|
||||||
if MindMapNode.query.count() == 0 and Category.query.count() > 0:
|
|
||||||
print("Erstelle Beispiel-Mindmap...")
|
|
||||||
create_sample_mindmap()
|
|
||||||
|
|
||||||
print("Datenbank wurde erfolgreich initialisiert.")
|
|
||||||
except Exception as e:
|
|
||||||
import traceback
|
|
||||||
print(f"Fehler bei der Datenbankinitialisierung: {e}")
|
|
||||||
print(traceback.format_exc())
|
|
||||||
|
|
||||||
# Moderne Methode für die Datenbankinitialisierung in Flask 2.2+
|
|
||||||
with app.app_context():
|
|
||||||
initialize_app()
|
|
||||||
|
|
||||||
def create_sample_mindmap():
|
|
||||||
"""Erstellt eine Beispiel-Mindmap mit Knoten und Beziehungen"""
|
|
||||||
|
|
||||||
# Kategorien für die Zuordnung
|
|
||||||
categories = Category.query.all()
|
|
||||||
category_map = {cat.name: cat for cat in categories}
|
|
||||||
|
|
||||||
# Beispielknoten erstellen
|
|
||||||
nodes = [
|
|
||||||
{
|
|
||||||
'name': 'Wissensmanagement',
|
|
||||||
'description': 'Systematische Erfassung, Speicherung und Nutzung von Wissen in Organisationen.',
|
|
||||||
'color_code': '#6366f1',
|
|
||||||
'icon': 'database',
|
|
||||||
'category': category_map.get('Philosophie'),
|
|
||||||
'x': 0,
|
|
||||||
'y': 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': 'Mind-Mapping',
|
|
||||||
'description': 'Technik zur visuellen Darstellung von Informationen und Zusammenhängen.',
|
|
||||||
'color_code': '#10b981',
|
|
||||||
'icon': 'git-branch',
|
|
||||||
'category': category_map.get('Technologie'),
|
|
||||||
'x': 200,
|
|
||||||
'y': -150
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': 'Cytoscape.js',
|
|
||||||
'description': 'JavaScript-Bibliothek für die Visualisierung und Manipulation von Graphen.',
|
|
||||||
'color_code': '#3b82f6',
|
|
||||||
'icon': 'code',
|
|
||||||
'category': category_map.get('Technologie'),
|
|
||||||
'x': 350,
|
|
||||||
'y': -50
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': 'Socket.IO',
|
|
||||||
'description': 'Bibliothek für Echtzeit-Kommunikation zwischen Client und Server.',
|
|
||||||
'color_code': '#3b82f6',
|
|
||||||
'icon': 'zap',
|
|
||||||
'category': category_map.get('Technologie'),
|
|
||||||
'x': 350,
|
|
||||||
'y': 100
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': 'Kollaboration',
|
|
||||||
'description': 'Zusammenarbeit mehrerer Benutzer an gemeinsamen Inhalten.',
|
|
||||||
'color_code': '#f59e0b',
|
|
||||||
'icon': 'users',
|
|
||||||
'category': category_map.get('Psychologie'),
|
|
||||||
'x': 200,
|
|
||||||
'y': 150
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': 'SQLite',
|
|
||||||
'description': 'Leichtgewichtige relationale Datenbank, die ohne Server-Prozess auskommt.',
|
|
||||||
'color_code': '#3b82f6',
|
|
||||||
'icon': 'database',
|
|
||||||
'category': category_map.get('Technologie'),
|
|
||||||
'x': 0,
|
|
||||||
'y': 200
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': 'Flask',
|
|
||||||
'description': 'Leichtgewichtiges Python-Webframework für die Entwicklung von Webanwendungen.',
|
|
||||||
'color_code': '#3b82f6',
|
|
||||||
'icon': 'server',
|
|
||||||
'category': category_map.get('Technologie'),
|
|
||||||
'x': -200,
|
|
||||||
'y': 150
|
|
||||||
},
|
|
||||||
{
|
|
||||||
'name': 'REST API',
|
|
||||||
'description': 'Architekturstil für verteilte Systeme, insbesondere Webanwendungen.',
|
|
||||||
'color_code': '#10b981',
|
|
||||||
'icon': 'link',
|
|
||||||
'category': category_map.get('Wissenschaft'),
|
|
||||||
'x': -200,
|
|
||||||
'y': -150
|
|
||||||
}
|
|
||||||
]
|
|
||||||
|
|
||||||
# Erstelle einen zentralen "Wissen"-Knoten
|
|
||||||
wissen_node = MindMapNode.query.filter_by(name="Wissen").first()
|
|
||||||
if not wissen_node:
|
|
||||||
wissen_node = MindMapNode(
|
|
||||||
name="Wissen",
|
|
||||||
description="Zentrale Wissensbasis",
|
|
||||||
color_code="#4299E1",
|
|
||||||
icon="brain",
|
|
||||||
is_public=True
|
|
||||||
)
|
|
||||||
db.session.add(wissen_node)
|
|
||||||
db.session.flush()
|
|
||||||
|
|
||||||
# Erstelle die Knoten und verbinde sie mit dem Wissen-Knoten
|
|
||||||
created_nodes = []
|
|
||||||
for node_data in nodes:
|
|
||||||
node = MindMapNode(
|
|
||||||
name=node_data['name'],
|
|
||||||
description=node_data['description'],
|
|
||||||
color_code=node_data['color_code'],
|
|
||||||
icon=node_data.get('icon', 'circle'),
|
|
||||||
is_public=True,
|
|
||||||
category=node_data.get('category')
|
|
||||||
)
|
|
||||||
db.session.add(node)
|
|
||||||
db.session.flush()
|
|
||||||
|
|
||||||
# Verbinde mit dem Wissen-Knoten
|
|
||||||
wissen_node.children.append(node)
|
|
||||||
created_nodes.append(node)
|
|
||||||
|
|
||||||
# Erstelle einige Verbindungen zwischen den Knoten
|
|
||||||
if len(created_nodes) >= 2:
|
|
||||||
# Verbinde einige Knoten miteinander
|
|
||||||
created_nodes[0].children.append(created_nodes[1]) # Wissensmanagement -> Mind-Mapping
|
|
||||||
if len(created_nodes) >= 3:
|
|
||||||
created_nodes[1].children.append(created_nodes[2]) # Mind-Mapping -> Cytoscape.js
|
|
||||||
|
|
||||||
db.session.commit()
|
|
||||||
print("Beispiel-Mindmap wurde erstellt!")
|
|
||||||
|
|
||||||
def create_default_categories():
|
def create_default_categories():
|
||||||
"""Erstellt die Standardkategorien für die Mindmap"""
|
"""Erstellt die Standardkategorien für die Mindmap"""
|
||||||
# Hauptkategorien
|
# Hauptkategorien
|
||||||
@@ -2130,4 +1967,33 @@ def get_mindmap_node(node_id):
|
|||||||
return jsonify({
|
return jsonify({
|
||||||
'success': False,
|
'success': False,
|
||||||
'error': 'Mindmap-Daten konnten nicht geladen werden'
|
'error': 'Mindmap-Daten konnten nicht geladen werden'
|
||||||
}), 500
|
}), 500
|
||||||
|
|
||||||
|
# Automatische Datenbankinitialisierung - Aktualisiert für Flask 2.2+ Kompatibilität
|
||||||
|
def initialize_app():
|
||||||
|
"""Initialisierung der Anwendung"""
|
||||||
|
print("Initialisierung der Anwendung...")
|
||||||
|
with app.app_context():
|
||||||
|
# Prüfen, ob die Datenbank existiert und initialisiert ist
|
||||||
|
try:
|
||||||
|
# Prüfen, ob Tabellen existieren
|
||||||
|
db.create_all()
|
||||||
|
|
||||||
|
# Prüfen, ob Stammdaten vorhanden sind
|
||||||
|
if User.query.count() == 0:
|
||||||
|
print("Erstelle Standardbenutzer...")
|
||||||
|
create_default_users()
|
||||||
|
|
||||||
|
# Wir nutzen die initialize_database Funktion für Kategorien und Mindmap
|
||||||
|
# Diese Funktionalität ist bereits dort implementiert
|
||||||
|
initialize_database()
|
||||||
|
|
||||||
|
print("Datenbank wurde erfolgreich initialisiert.")
|
||||||
|
except Exception as e:
|
||||||
|
import traceback
|
||||||
|
print(f"Fehler bei der Datenbankinitialisierung: {e}")
|
||||||
|
print(traceback.format_exc())
|
||||||
|
|
||||||
|
# Moderne Methode für die Datenbankinitialisierung in Flask 2.2+
|
||||||
|
with app.app_context():
|
||||||
|
initialize_app()
|
||||||
Binary file not shown.
Reference in New Issue
Block a user