feat: Entferne die alte Drucker-API-Route und aktualisiere die Frontend-Fehlerbehandlung für Druckeroperationen

This commit is contained in:
Till Tomczak 2025-05-26 13:16:36 +02:00
parent 6aff252bd2
commit b379cdf4c9
2 changed files with 13 additions and 69 deletions

View File

@ -1100,68 +1100,7 @@ def delete_user(user_id):
flash(f"Fehler beim Löschen des Benutzers: {str(e)}", "error")
return redirect(url_for('admin_page', tab='users'))
@app.route("/api/printers", methods=["POST"])
@login_required
def create_printer():
"""Create a new printer (admin only)"""
if not current_user.is_admin:
flash("Sie haben keine Berechtigung, um neue Drucker anzulegen.", "error")
return redirect(url_for('admin_page', tab='printers'))
db_session = get_db_session()
try:
# Statt JSON-Daten die Formulardaten aus dem POST-Request holen
name = request.form.get('name')
model = request.form.get('model')
location = request.form.get('location')
mac_address = request.form.get('mac_address')
plug_ip = request.form.get('plug_ip')
plug_username = request.form.get('plug_username')
plug_password = request.form.get('plug_password')
# Check required fields
if not name or not mac_address:
db_session.close()
flash("Name und MAC-Adresse sind Pflichtfelder.", "error")
return redirect(url_for('admin_page', tab='printers'))
# Check if printer with same MAC already exists
existing_printer = db_session.query(Printer).filter(
Printer.mac_address == mac_address
).first()
if existing_printer:
db_session.close()
flash("Ein Drucker mit dieser MAC-Adresse existiert bereits.", "error")
return redirect(url_for('admin_page', tab='printers'))
# Create new printer
new_printer = Printer(
name=name,
model=model or "",
location=location or "",
mac_address=mac_address,
plug_ip=plug_ip or "",
plug_username=plug_username or "",
plug_password=plug_password or "",
active=True
)
db_session.add(new_printer)
db_session.commit()
printer_id = new_printer.id
db_session.close()
app_logger.info(f"New printer created: {new_printer.name} (ID: {printer_id})")
flash(f"Drucker {name} wurde erfolgreich angelegt.", "success")
return redirect(url_for('admin_page', tab='printers'))
except Exception as e:
db_session.rollback()
db_session.close()
app_logger.error(f"Error creating printer: {str(e)}")
flash(f"Fehler beim Anlegen des Druckers: {str(e)}", "error")
return redirect(url_for('admin_page', tab='printers'))
# Diese Route wurde entfernt - verwende stattdessen /api/printers/add für JSON-API
@app.route("/api/printers/<int:printer_id>", methods=["DELETE"])
@login_required

View File

@ -481,21 +481,23 @@
const response = await fetch('/api/printers/add', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]')?.getAttribute('content')
'Content-Type': 'application/json'
},
body: JSON.stringify(printerData)
});
if (!response.ok) {
throw new Error('Fehler beim Hinzufügen des Druckers');
const errorData = await response.json();
throw new Error(errorData.error || 'Fehler beim Hinzufügen des Druckers');
}
const result = await response.json();
hideAddPrinterModal();
showStatusMessage(result.message || 'Drucker erfolgreich hinzugefügt', 'success');
loadPrinters();
} catch (error) {
console.error('Error adding printer:', error);
alert('Fehler beim Hinzufügen des Druckers');
showStatusMessage('Fehler beim Hinzufügen des Druckers: ' + error.message, 'error');
}
}
@ -509,19 +511,22 @@
const response = await fetch(`/api/printers/${printerId}`, {
method: 'DELETE',
headers: {
'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]')?.getAttribute('content')
'Content-Type': 'application/json'
}
});
if (!response.ok) {
throw new Error('Fehler beim Löschen des Druckers');
const errorData = await response.json();
throw new Error(errorData.error || 'Fehler beim Löschen des Druckers');
}
const result = await response.json();
hidePrinterDetailModal();
showStatusMessage(result.message || 'Drucker erfolgreich gelöscht', 'success');
loadPrinters();
} catch (error) {
console.error('Error deleting printer:', error);
alert('Fehler beim Löschen des Druckers');
showStatusMessage('Fehler beim Löschen des Druckers: ' + error.message, 'error');
}
}