#!/usr/bin/env python3 """ Skript zur Bereinigung der Drucker-Datenbank und Hinzufügung der korrekten hardkodierten Drucker. """ 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 clean_and_add_printers(): """Bereinigt die Drucker-Datenbank und fügt die korrekten hardkodierten Drucker hinzu.""" print("=== Drucker-Datenbank bereinigen und neu erstellen ===") print(f"Hardkodierte Drucker: {len(PRINTERS)}") try: db = DatabaseManager() session = db.get_session() # Alle existierenden Drucker löschen existing_printers = session.query(Printer).all() print(f"Lösche {len(existing_printers)} existierende Drucker...") for printer in existing_printers: session.delete(printer) session.commit() print("✅ Alle alten Drucker gelöscht") # Neue Drucker hinzufügen added_count = 0 for printer_name, config in PRINTERS.items(): # Neuen Drucker erstellen new_printer = Printer( name=printer_name, model="P115", # Standard-Modell location="Werk 040 - Berlin - TBA", # Aktualisierter 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-Datenbank erfolgreich bereinigt und neu erstellt!") except Exception as e: print(f"❌ Fehler beim Bereinigen: {e}") if 'session' in locals(): session.rollback() session.close() def list_final_printers(): """Zeigt die finalen Drucker in der Datenbank an.""" print("\n=== Finale Drucker-Liste ===") 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() print(f"\nGesamt: {len(printers)} Drucker") except Exception as e: print(f"❌ Fehler beim Abrufen: {e}") if 'session' in locals(): session.close() if __name__ == "__main__": print("Drucker-Datenbank Bereinigung und Neuerstellung") print("=" * 50) # Datenbank bereinigen und neue Drucker hinzufügen clean_and_add_printers() # Finale Liste anzeigen list_final_printers()