110 lines
3.5 KiB
Python
110 lines
3.5 KiB
Python
#!/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() |