📝 Commit Details:

This commit is contained in:
2025-05-31 22:40:29 +02:00
parent 91b1886dde
commit df8fb197c0
14061 changed files with 997277 additions and 103548 deletions

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