45 lines
1.4 KiB
Python
45 lines
1.4 KiB
Python
|
|
"""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()
|