Es scheint, dass Sie eine Reihe von Dateien und Verzeichnissen in einem Backend-Projekt bearbeitet haben. Hier ist eine Zusammenfassung der Änderungen:

This commit is contained in:
Tomczak
2025-06-19 11:49:24 +02:00
parent c16bcca9e6
commit 9bf89f8ddb
389 changed files with 6135 additions and 2886 deletions

View File

@@ -1971,7 +1971,7 @@ class PlugStatusLog(Base):
Erstellt einen neuen Status-Log-Eintrag für eine Steckdose.
Args:
printer_id: ID des zugehörigen Druckers
printer_id: ID des zugehörigen Druckers (ERFORDERLICH!)
status: Status der Steckdose ('connected', 'disconnected', 'on', 'off')
source: Quelle der Statusänderung ('system', 'manual', 'api', 'scheduler')
user_id: ID des Benutzers (bei manueller Änderung)
@@ -1987,8 +1987,27 @@ class PlugStatusLog(Base):
Returns:
Das erstellte PlugStatusLog-Objekt
"""
# VALIDIERUNG: printer_id ist erforderlich
if printer_id is None:
error_msg = "printer_id ist erforderlich für PlugStatusLog.log_status_change"
logger.error(error_msg)
raise ValueError(error_msg)
if not status:
error_msg = "status ist erforderlich für PlugStatusLog.log_status_change"
logger.error(error_msg)
raise ValueError(error_msg)
try:
with get_cached_session() as session:
# Verwende get_db_session() für bessere Kontrolle
db_session = get_db_session()
try:
# Prüfe ob Drucker existiert
printer = db_session.query(Printer).filter(Printer.id == printer_id).first()
if not printer:
logger.warning(f"Drucker mit ID {printer_id} nicht gefunden für PlugStatusLog")
# Trotzdem loggen, aber mit Warnung
log_entry = cls(
printer_id=printer_id,
status=status,
@@ -2001,20 +2020,28 @@ class PlugStatusLog(Base):
notes=notes,
response_time_ms=response_time_ms,
error_message=error_message,
firmware_version=firmware_version
firmware_version=firmware_version,
timestamp=datetime.now()
)
session.add(log_entry)
session.commit()
db_session.add(log_entry)
db_session.commit()
# Cache invalidieren
invalidate_model_cache("PlugStatusLog")
logger.info(f"Steckdosen-Status geloggt: Drucker {printer_id}, Status: {status}, Quelle: {source}")
logger.info(f"Steckdosen-Status geloggt: Drucker {printer_id}, Status: {status}, Quelle: {source}")
return log_entry
except Exception as db_error:
logger.error(f"❌ Datenbankfehler beim Loggen des Steckdosen-Status: {str(db_error)}")
db_session.rollback()
raise db_error
finally:
db_session.close()
except Exception as e:
logger.error(f"Fehler beim Loggen des Steckdosen-Status: {str(e)}")
logger.error(f"❌ Allgemeiner Fehler beim Loggen des Steckdosen-Status: {str(e)}")
raise e
@classmethod