"feat: Integrate hardcoded printers into update_printers script"

This commit is contained in:
2025-05-26 12:19:45 +02:00
parent 0847a47e5f
commit 6284b92076
2 changed files with 217 additions and 0 deletions

View File

@@ -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()

View File

@@ -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()