"""Migration 2026-05-25: Drucker-Tabelle um Freigabe-Status + URL-Overrides. Etappe 5-vorgezogen: Lehrer muss einen Drucker voruebergehend sperren koennen (Reparatur, Aufraeumarbeiten, Filament-Wechsel), und SuS sehen das mit Grund. Plus optionale URL-Felder fuer Drucker-spezifische Manual-/Troubleshooting-Links. Idempotent: prueft PRAGMA table_info bevor ADD COLUMN. """ import sys from pathlib import Path sys.path.insert(0, str(Path(__file__).resolve().parent.parent)) from database import get_db NEUE_SPALTEN = [ ("freigegeben", "INTEGER DEFAULT 1"), ("gesperrt_grund", "TEXT"), ("manual_url", "TEXT"), ("troubleshooting_url", "TEXT"), ] def main(): conn = get_db() spalten = {row["name"] for row in conn.execute("PRAGMA table_info(drucker)")} angelegt = [] for name, typ in NEUE_SPALTEN: if name not in spalten: conn.execute(f"ALTER TABLE drucker ADD COLUMN {name} {typ}") angelegt.append(name) # Bestehende Drucker auf freigegeben=1 setzen (ALTER mit DEFAULT setzt # neue Zeilen, aber bestehende Zeilen bekommen NULL — wir korrigieren das). conn.execute("UPDATE drucker SET freigegeben = 1 WHERE freigegeben IS NULL") conn.commit() conn.close() if angelegt: print(f"[migration] drucker: Spalten ergaenzt: {', '.join(angelegt)}.") else: print("[migration] drucker: alle Spalten existieren bereits — nichts zu tun.") if __name__ == "__main__": main()