"""Initial-Seeds fuer 3d.lehrstun.de. Idempotent — laeuft bei jeder Ausfuehrung ohne Schaden. Aktuell befuellt: - ag_mitgliedschaft: 'lessing-3d-ag' (die eine, dauerhafte AG) - drucker: 4 Bambu-Lab-Drucker (3 geschlossen + 1 A1 mini) Spaeter folgen Seeds fuer: - lektion: L1-L3 Onboarding (Etappe 3, mit Herr Rechmann inhaltlich) - einstellung: Default-Werte fuer Tag-Vorschlaege etc. """ from database import get_db, init_db def seed_ag(): """Die eine dauerhafte AG.""" conn = get_db() conn.execute( "INSERT OR IGNORE INTO ag_mitgliedschaft (id, name, start_datum, status) " "VALUES (?, ?, ?, ?)", ("lessing-3d-ag", "3D-Druck-AG Lessing-Gymnasium", "2026-05-24", "aktiv") ) conn.commit() conn.close() print("[seed] AG 'lessing-3d-ag' angelegt (oder bereits da).") def seed_drucker(): """4 Bambu-Lab-Drucker mit Default-Namen. Konkrete Serial-Numbers + Namen werden vom Admin per Inline-Edit gepflegt. Hier nur Platzhalter, damit die Drucker-Verwaltung was zum Anzeigen hat. """ drucker = [ ("P1S #1", "P1S", None, 1, "geschlossenes Gehäuse"), ("P1S #2", "P1S", None, 1, "geschlossenes Gehäuse"), ("H2S", "H2S", None, 1, "geschlossen, neues Bambu-Modell"), ("A1 mini", "A1 mini", None, 0, "offen — Hände weg vom Hotend!"), ] conn = get_db() for name, modell, serial, geschlossen, notiz in drucker: conn.execute( "INSERT OR IGNORE INTO drucker (name, modell, serial_nr, geschlossenes_gehaeuse, aktiv, notiz) " "VALUES (?, ?, ?, ?, 1, ?)", (name, modell, serial, geschlossen, notiz) ) conn.commit() conn.close() print(f"[seed] {len(drucker)} Drucker angelegt (oder bereits da).") def seed_lektionen(): """3 Onboarding-Lektionen mit Platzhalter-Inhalt. Endgueltige Inhalte werden gemeinsam mit Herr Rechmann erarbeitet (siehe docs/lektion-L1-drucker-kennenlernen.md etc.). Hier nur das Geruest, damit der Onboarding-Pfad ueberhaupt was zum Anklicken hat. """ lektionen = [ # L1-Inhalt wird durch migrations/2026-05-24_l1_inhalt_v2.py auf den # endgueltigen Stand gebracht — hier nur Minimal-Stub, damit `seed.py` # alleine schon was anzeigt. Bei voller Doku: erst seed.py, dann alle # migrations/ ausfuehren. (1, "Drucker-Kennenlernen + Sicherheit", "*Inhalt kommt mit Migration 2026-05-24_l1_inhalt_v2.py.*", "Frag den Lehrer, wenn du irgendwas nicht verstehst — Sicherheit geht vor.", "https://wiki.bambulab.com/de/p2s/manual/p2s-intro"), # L2/L3: Sprache angepasst per Migration 2026-05-24_lektion_sprache_3d_modell # — 'Modell' ist mehrdeutig (Drucker- vs. 3D-Modell), durchgehend 3D-Modell verwendet. (2, "3D-Modell aus dem Netz drucken", "*Inhalt kommt mit Migration 2026-05-24_lektion_sprache_3d_modell.*", "Lizenz-Symbole sind nicht wichtig fuer uns — wir drucken nur fuer uns selbst, geben nichts weiter.", "https://www.printables.com/"), (3, "Mein eigenes 3D-Modell designen", "*Inhalt kommt mit Migration 2026-05-24_lektion_sprache_3d_modell + DB-Update.*", "Tipp: Das 3D-Modell 'Parametric Name Keychain Creator' auf MakerWorld ist ein guter Einstieg.", "https://makerworld.com/en/models/1320280"), ] conn = get_db() for nummer, titel, aufgabe_md, tipp_md, extern_link in lektionen: conn.execute( "INSERT OR IGNORE INTO lektion (nummer, titel, onboarding, aufgabe_md, tipp_md, extern_link, schwierigkeit, aktiv) " "VALUES (?, ?, 1, ?, ?, ?, 'leicht', 1)", (nummer, titel, aufgabe_md, tipp_md, extern_link) ) conn.commit() conn.close() print(f"[seed] {len(lektionen)} Onboarding-Lektionen angelegt.") def seed_einstellungen(): """Default-Einstellungen, die spaeter inline editiert werden koennen.""" werte = [ ("tag_vorschlaege", "schluesselanhaenger,organizer,werkzeug,spiel,dekoration,ersatzteil,geschenk,figur", "text", "Komma-getrennte Liste der vorgeschlagenen Tags im Projekt-Katalog"), ("default_lockout_dauer_min", "15", "integer", "Minuten, die ein Profil bei zu vielen Fehlversuchen gesperrt wird"), ("feedback_widget_aktiv", "0", "integer", "Soft-Schalter fuer das Alph-PummelHummel-Widget (kommt in Etappe 9)"), ] conn = get_db() for schluessel, wert, typ, beschreibung in werte: conn.execute( "INSERT OR IGNORE INTO einstellung (schluessel, wert, typ, beschreibung) " "VALUES (?, ?, ?, ?)", (schluessel, wert, typ, beschreibung) ) conn.commit() conn.close() print(f"[seed] {len(werte)} Default-Einstellungen angelegt.") def main(): init_db() seed_ag() seed_drucker() seed_lektionen() seed_einstellungen() print("[seed] Fertig.") if __name__ == "__main__": main()