+ update emblemed support in iframe and list view
This commit is contained in:
85
update.py
Normal file
85
update.py
Normal file
@@ -0,0 +1,85 @@
|
||||
import subprocess
|
||||
import sys
|
||||
import os
|
||||
import platform
|
||||
|
||||
def run_command(command, cwd=None):
|
||||
"""
|
||||
Führt einen Befehl aus, gibt seine Ausgabe in Echtzeit aus und prüft auf Fehler.
|
||||
"""
|
||||
print(f"\n>>> Führe aus: {' '.join(command)}")
|
||||
print("-" * 40)
|
||||
try:
|
||||
# Stelle sicher, dass der Python-Interpreter des venv für Module verwendet wird
|
||||
process = subprocess.Popen(
|
||||
command,
|
||||
stdout=subprocess.PIPE,
|
||||
stderr=subprocess.STDOUT,
|
||||
text=True,
|
||||
encoding='utf-8',
|
||||
errors='replace', # Verhindert Fehler bei unerwarteten Zeichen
|
||||
cwd=cwd,
|
||||
bufsize=1 # Zeilen-gepuffert
|
||||
)
|
||||
|
||||
# Lese und drucke die Ausgabe Zeile für Zeile
|
||||
for line in iter(process.stdout.readline, ''):
|
||||
print(line, end='')
|
||||
|
||||
process.wait() # Warte auf das Ende des Prozesses
|
||||
|
||||
if process.returncode != 0:
|
||||
print("-" * 40)
|
||||
print(f"FEHLER: Befehl schlug mit Exit-Code {process.returncode} fehl.")
|
||||
print("-" * 40)
|
||||
return False
|
||||
|
||||
print("-" * 40)
|
||||
print(">>> Befehl erfolgreich abgeschlossen.")
|
||||
return True
|
||||
|
||||
except FileNotFoundError:
|
||||
print(f"FEHLER: Befehl '{command[0]}' nicht gefunden. Ist Git/Python korrekt installiert und im PATH?")
|
||||
return False
|
||||
except Exception as e:
|
||||
print(f"Ein unerwarteter Fehler ist aufgetreten: {e}")
|
||||
return False
|
||||
|
||||
def main():
|
||||
"""Haupt-Update-Prozess."""
|
||||
print("Starte den Update-Prozess der Anwendung...")
|
||||
|
||||
project_root = os.path.dirname(os.path.abspath(__file__))
|
||||
|
||||
# Finde den Python-Interpreter des aktuellen Virtual Environments
|
||||
python_executable = sys.executable
|
||||
|
||||
# Schritt 1: Neueste Änderungen von Git holen
|
||||
if not run_command(["git", "pull"], cwd=project_root):
|
||||
print("\nUpdate fehlgeschlagen: Konnte die neuesten Änderungen nicht von Git holen.")
|
||||
sys.exit(1)
|
||||
|
||||
# Schritt 2: Python-Abhängigkeiten installieren/aktualisieren
|
||||
if not run_command([python_executable, "-m", "pip", "install", "-r", "requirements.txt"], cwd=project_root):
|
||||
print("\nUpdate fehlgeschlagen: Konnte die Python-Abhängigkeiten nicht installieren.")
|
||||
sys.exit(1)
|
||||
|
||||
# Schritt 3: Datenbank-Migrationen erstellen (falls nötig)
|
||||
# Dieser Befehl erkennt Modelländerungen und erstellt ein Migrationsskript.
|
||||
# Er kann fehlschlagen, wenn es keine Änderungen gibt, das ist in Ordnung.
|
||||
print("\nVersuche, Datenbank-Änderungen zu erkennen...")
|
||||
run_command([python_executable, "-m", "flask", "--app", "main", "db", "migrate", "-m", "Auto-detect model changes"], cwd=project_root)
|
||||
|
||||
# Schritt 4: Datenbank-Migrationen anwenden
|
||||
print("\nWende Datenbank-Migrationen an...")
|
||||
if not run_command([python_executable, "-m", "flask", "--app", "main", "db", "upgrade"], cwd=project_root):
|
||||
print("\nUpdate fehlgeschlagen: Konnte die Datenbank-Migrationen nicht anwenden.")
|
||||
sys.exit(1)
|
||||
|
||||
print("\n\n===================================================")
|
||||
print("✅ Update erfolgreich abgeschlossen!")
|
||||
print("Bitte starten Sie die Anwendung (main.py) neu, um die Änderungen zu übernehmen.")
|
||||
print("===================================================")
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
Reference in New Issue
Block a user