manage-your-printer/utils/add_hardcoded_printers.py
2025-06-04 10:03:22 +02:00

107 lines
3.3 KiB
Python

#!/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="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-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()