diff --git a/backend/app/add_hardcoded_printers.py b/backend/app/add_hardcoded_printers.py new file mode 100644 index 000000000..417e743fd --- /dev/null +++ b/backend/app/add_hardcoded_printers.py @@ -0,0 +1,107 @@ +#!/usr/bin/env python3 +""" +Skript zum Hinzufügen der hardkodierten Drucker in die Datenbank. +""" + +import sys +import os +sys.path.append('.') + +from config.settings import PRINTERS +from database.db_manager import DatabaseManager +from models import Printer +from datetime import datetime + +def add_hardcoded_printers(): + """Fügt die hardkodierten Drucker in die Datenbank ein.""" + + print("=== Hardkodierte Drucker hinzufügen ===") + print(f"Zu erstellende Drucker: {len(PRINTERS)}") + + try: + db = DatabaseManager() + session = db.get_session() + + added_count = 0 + + for printer_name, config in PRINTERS.items(): + # Prüfen, ob Drucker bereits existiert + existing = session.query(Printer).filter(Printer.name == printer_name).first() + + if existing: + print(f"⚠️ {printer_name}: Bereits vorhanden (ID: {existing.id})") + continue + + # Neuen Drucker erstellen + new_printer = Printer( + name=printer_name, + model="P115", # Standard-Modell + location="Labor", # Standard-Standort + ip_address=config["ip"], + mac_address=f"98:25:4A:E1:{printer_name[-1]}0:0{printer_name[-1]}", # Dummy MAC + plug_ip=config["ip"], + plug_username="admin", + plug_password="admin", + status="available", # Verfügbar, da in Konfiguration + active=True, + created_at=datetime.now() + ) + + session.add(new_printer) + print(f"✅ {printer_name}: Hinzugefügt (IP: {config['ip']})") + added_count += 1 + + # Änderungen speichern + session.commit() + session.close() + + print(f"\n✅ {added_count} neue Drucker hinzugefügt") + print("Drucker-Erstellung abgeschlossen!") + + except Exception as e: + print(f"❌ Fehler beim Hinzufügen: {e}") + if 'session' in locals(): + session.rollback() + session.close() + +def list_all_printers(): + """Zeigt alle Drucker in der Datenbank an.""" + + print("\n=== Alle Drucker in der Datenbank ===") + + try: + db = DatabaseManager() + session = db.get_session() + + printers = session.query(Printer).all() + + if not printers: + print("Keine Drucker in der Datenbank gefunden.") + return + + print(f"{'ID':<5} {'Name':<15} {'Status':<12} {'IP-Adresse':<15} {'Aktiv':<8}") + print("-" * 60) + + for printer in printers: + active_str = "✅" if printer.active else "❌" + print(f"{printer.id:<5} {printer.name:<15} {printer.status:<12} {printer.ip_address:<15} {active_str:<8}") + + session.close() + + except Exception as e: + print(f"❌ Fehler beim Abrufen: {e}") + if 'session' in locals(): + session.close() + +if __name__ == "__main__": + print("Hardkodierte Drucker-Erstellung") + print("=" * 35) + + # Aktuelle Drucker anzeigen + list_all_printers() + + # Hardkodierte Drucker hinzufügen + add_hardcoded_printers() + + # Alle Drucker anzeigen + list_all_printers() \ No newline at end of file diff --git a/backend/app/update_printers.py b/backend/app/update_printers.py new file mode 100644 index 000000000..5d13ddd14 --- /dev/null +++ b/backend/app/update_printers.py @@ -0,0 +1,110 @@ +#!/usr/bin/env python3 +""" +Skript zur Synchronisation der Drucker in der Datenbank mit den hardkodierten Druckern. +Setzt den Status basierend auf der Konfiguration. +""" + +import sys +import os +sys.path.append('.') + +from config.settings import PRINTERS +from database.db_manager import DatabaseManager +from models import Printer +from datetime import datetime + +def update_printer_status(): + """Aktualisiert den Status aller Drucker basierend auf der hardkodierten Konfiguration.""" + + print("=== Drucker-Status-Update ===") + print(f"Hardkodierte Drucker: {len(PRINTERS)}") + + try: + db = DatabaseManager() + session = db.get_session() + + # Alle Drucker aus der Datenbank abrufen + printers = session.query(Printer).all() + print(f"Drucker in Datenbank: {len(printers)}") + + updated_count = 0 + + for printer in printers: + # Prüfen, ob Drucker in der hardkodierten Konfiguration existiert + if printer.name in PRINTERS: + # Drucker ist konfiguriert -> online/verfügbar + old_status = printer.status + printer.status = "available" + printer.active = True + + # IP-Adresse aus Konfiguration aktualisieren + config_ip = PRINTERS[printer.name]["ip"] + if printer.ip_address != config_ip: + printer.ip_address = config_ip + + print(f"✅ {printer.name}: {old_status} -> available (IP: {config_ip})") + updated_count += 1 + else: + # Drucker nicht konfiguriert -> offline + old_status = printer.status + printer.status = "offline" + printer.active = False + print(f"❌ {printer.name}: {old_status} -> offline") + updated_count += 1 + + # Änderungen speichern + session.commit() + session.close() + + print(f"\n✅ {updated_count} Drucker aktualisiert") + print("Status-Update abgeschlossen!") + + except Exception as e: + print(f"❌ Fehler beim Update: {e}") + if 'session' in locals(): + session.rollback() + session.close() + +def list_printer_status(): + """Zeigt den aktuellen Status aller Drucker an.""" + + print("\n=== Aktueller Drucker-Status ===") + + try: + db = DatabaseManager() + session = db.get_session() + + printers = session.query(Printer).all() + + if not printers: + print("Keine Drucker in der Datenbank gefunden.") + return + + print(f"{'Name':<15} {'Status':<12} {'Aktiv':<8} {'IP-Adresse':<15} {'Konfiguriert':<12}") + print("-" * 70) + + for printer in printers: + configured = "✅" if printer.name in PRINTERS else "❌" + active_str = "✅" if printer.active else "❌" + + print(f"{printer.name:<15} {printer.status:<12} {active_str:<8} {printer.ip_address or 'N/A':<15} {configured:<12}") + + session.close() + + except Exception as e: + print(f"❌ Fehler beim Abrufen: {e}") + if 'session' in locals(): + session.close() + +if __name__ == "__main__": + print("Drucker-Status-Management") + print("=" * 30) + + # Aktuellen Status anzeigen + list_printer_status() + + # Status aktualisieren + update_printer_status() + + # Neuen Status anzeigen + list_printer_status() \ No newline at end of file