"feat: Integrate hardcoded printers into update_printers script"
This commit is contained in:
107
backend/app/add_hardcoded_printers.py
Normal file
107
backend/app/add_hardcoded_printers.py
Normal 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()
|
110
backend/app/update_printers.py
Normal file
110
backend/app/update_printers.py
Normal 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()
|
Reference in New Issue
Block a user