📝 🎉 Improved session management system with new backup database and enhanced logs 🌐
This commit is contained in:
@ -540,159 +540,16 @@ def delete_user_api(user_id):
|
||||
return jsonify({"error": "Fehler beim Löschen des Benutzers"}), 500
|
||||
|
||||
# ===== DRUCKER-API-ROUTEN =====
|
||||
# HINWEIS: Die Drucker-CRUD-Operationen wurden nach app.py verschoben
|
||||
# für konsistente API-Responses und bessere Wartbarkeit.
|
||||
# Verwenden Sie die folgenden Endpunkte:
|
||||
# - GET /api/admin/printers - Alle Drucker abrufen
|
||||
# - GET /api/admin/printers/<id> - Einzelnen Drucker abrufen
|
||||
# - POST /api/admin/printers - Neuen Drucker erstellen
|
||||
# - PUT /api/admin/printers/<id> - Drucker aktualisieren
|
||||
# - DELETE /api/admin/printers/<id> - Drucker löschen
|
||||
|
||||
@admin_blueprint.route("/api/printers", methods=["POST"])
|
||||
@admin_required
|
||||
def create_printer_api():
|
||||
"""Erstellt einen neuen Drucker über die API"""
|
||||
try:
|
||||
data = request.json
|
||||
if not data:
|
||||
return jsonify({"error": "Keine Daten empfangen"}), 400
|
||||
|
||||
# Pflichtfelder prüfen
|
||||
required_fields = ["name", "location"]
|
||||
for field in required_fields:
|
||||
if field not in data or not data[field]:
|
||||
return jsonify({"error": f"Feld '{field}' ist erforderlich"}), 400
|
||||
|
||||
with get_cached_session() as db_session:
|
||||
# Prüfen ob Name bereits existiert
|
||||
existing_printer = db_session.query(Printer).filter(Printer.name == data["name"]).first()
|
||||
if existing_printer:
|
||||
return jsonify({"error": "Ein Drucker mit diesem Namen existiert bereits"}), 400
|
||||
|
||||
# Neuen Drucker erstellen
|
||||
printer = Printer(
|
||||
name=data["name"],
|
||||
location=data["location"],
|
||||
model=data.get("model", ""),
|
||||
ip_address=data.get("ip_address", ""),
|
||||
api_key=data.get("api_key", ""),
|
||||
plug_ip=data.get("plug_ip", ""),
|
||||
plug_username=data.get("plug_username", ""),
|
||||
plug_password=data.get("plug_password", ""),
|
||||
status="offline"
|
||||
)
|
||||
|
||||
db_session.add(printer)
|
||||
db_session.commit()
|
||||
db_session.refresh(printer)
|
||||
|
||||
admin_logger.info(f"Drucker {printer.name} erstellt von Admin {current_user.username}")
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"message": "Drucker erfolgreich erstellt",
|
||||
"printer": printer.to_dict()
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
admin_logger.error(f"Fehler beim Erstellen des Druckers: {str(e)}")
|
||||
return jsonify({"error": "Fehler beim Erstellen des Druckers"}), 500
|
||||
|
||||
@admin_blueprint.route("/api/printers/<int:printer_id>", methods=["GET"])
|
||||
@admin_required
|
||||
def get_printer_api(printer_id):
|
||||
"""Gibt einen einzelnen Drucker zurück"""
|
||||
try:
|
||||
with get_cached_session() as db_session:
|
||||
printer = db_session.query(Printer).filter(Printer.id == printer_id).first()
|
||||
|
||||
if not printer:
|
||||
return jsonify({"error": "Drucker nicht gefunden"}), 404
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"printer": printer.to_dict()
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
admin_logger.error(f"Fehler beim Abrufen des Druckers: {str(e)}")
|
||||
return jsonify({"error": "Fehler beim Abrufen des Druckers"}), 500
|
||||
|
||||
@admin_blueprint.route("/api/printers/<int:printer_id>", methods=["PUT"])
|
||||
@admin_required
|
||||
def update_printer_api(printer_id):
|
||||
"""Aktualisiert einen Drucker über die API"""
|
||||
try:
|
||||
data = request.json
|
||||
if not data:
|
||||
return jsonify({"error": "Keine Daten empfangen"}), 400
|
||||
|
||||
with get_cached_session() as db_session:
|
||||
printer = db_session.query(Printer).filter(Printer.id == printer_id).first()
|
||||
|
||||
if not printer:
|
||||
return jsonify({"error": "Drucker nicht gefunden"}), 404
|
||||
|
||||
# Prüfen ob neuer Name bereits existiert (falls Name geändert wird)
|
||||
if "name" in data and data["name"] != printer.name:
|
||||
existing_printer = db_session.query(Printer).filter(
|
||||
Printer.name == data["name"],
|
||||
Printer.id != printer_id
|
||||
).first()
|
||||
if existing_printer:
|
||||
return jsonify({"error": "Ein Drucker mit diesem Namen existiert bereits"}), 400
|
||||
|
||||
# Drucker-Eigenschaften aktualisieren
|
||||
updateable_fields = ["name", "location", "model", "ip_address", "api_key",
|
||||
"plug_ip", "plug_username", "plug_password"]
|
||||
|
||||
for field in updateable_fields:
|
||||
if field in data:
|
||||
setattr(printer, field, data[field])
|
||||
|
||||
db_session.commit()
|
||||
|
||||
admin_logger.info(f"Drucker {printer.name} aktualisiert von Admin {current_user.username}")
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"message": "Drucker erfolgreich aktualisiert",
|
||||
"printer": printer.to_dict()
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
admin_logger.error(f"Fehler beim Aktualisieren des Druckers: {str(e)}")
|
||||
return jsonify({"error": "Fehler beim Aktualisieren des Druckers"}), 500
|
||||
|
||||
@admin_blueprint.route("/api/printers/<int:printer_id>", methods=["DELETE"])
|
||||
@admin_required
|
||||
def delete_printer_api(printer_id):
|
||||
"""Löscht einen Drucker über die API"""
|
||||
try:
|
||||
with get_cached_session() as db_session:
|
||||
printer = db_session.query(Printer).filter(Printer.id == printer_id).first()
|
||||
|
||||
if not printer:
|
||||
return jsonify({"error": "Drucker nicht gefunden"}), 404
|
||||
|
||||
# Prüfen ob noch aktive Jobs für diesen Drucker existieren
|
||||
active_jobs = db_session.query(Job).filter(
|
||||
Job.printer_id == printer_id,
|
||||
Job.status.in_(['pending', 'printing', 'paused'])
|
||||
).count()
|
||||
|
||||
if active_jobs > 0:
|
||||
return jsonify({
|
||||
"error": f"Drucker kann nicht gelöscht werden. Es gibt noch {active_jobs} aktive Job(s)"
|
||||
}), 400
|
||||
|
||||
printer_name = printer.name
|
||||
db_session.delete(printer)
|
||||
db_session.commit()
|
||||
|
||||
admin_logger.info(f"Drucker {printer_name} gelöscht von Admin {current_user.username}")
|
||||
|
||||
return jsonify({
|
||||
"success": True,
|
||||
"message": "Drucker erfolgreich gelöscht"
|
||||
})
|
||||
|
||||
except Exception as e:
|
||||
admin_logger.error(f"Fehler beim Löschen des Druckers: {str(e)}")
|
||||
return jsonify({"error": "Fehler beim Löschen des Druckers"}), 500
|
||||
# Die alten Routen wurden entfernt, um Duplikate zu vermeiden
|
||||
|
||||
# ===== ERWEITERTE SYSTEM-API (ursprünglich admin_api.py) =====
|
||||
|
||||
|
Reference in New Issue
Block a user