feat: Entferne die alte Drucker-API-Route und aktualisiere die Frontend-Fehlerbehandlung für Druckeroperationen
This commit is contained in:
parent
6aff252bd2
commit
b379cdf4c9
@ -1100,68 +1100,7 @@ def delete_user(user_id):
|
|||||||
flash(f"Fehler beim Löschen des Benutzers: {str(e)}", "error")
|
flash(f"Fehler beim Löschen des Benutzers: {str(e)}", "error")
|
||||||
return redirect(url_for('admin_page', tab='users'))
|
return redirect(url_for('admin_page', tab='users'))
|
||||||
|
|
||||||
@app.route("/api/printers", methods=["POST"])
|
# Diese Route wurde entfernt - verwende stattdessen /api/printers/add für JSON-API
|
||||||
@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'))
|
|
||||||
|
|
||||||
@app.route("/api/printers/<int:printer_id>", methods=["DELETE"])
|
@app.route("/api/printers/<int:printer_id>", methods=["DELETE"])
|
||||||
@login_required
|
@login_required
|
||||||
|
@ -481,21 +481,23 @@
|
|||||||
const response = await fetch('/api/printers/add', {
|
const response = await fetch('/api/printers/add', {
|
||||||
method: 'POST',
|
method: 'POST',
|
||||||
headers: {
|
headers: {
|
||||||
'Content-Type': 'application/json',
|
'Content-Type': 'application/json'
|
||||||
'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]')?.getAttribute('content')
|
|
||||||
},
|
},
|
||||||
body: JSON.stringify(printerData)
|
body: JSON.stringify(printerData)
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
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();
|
hideAddPrinterModal();
|
||||||
|
showStatusMessage(result.message || 'Drucker erfolgreich hinzugefügt', 'success');
|
||||||
loadPrinters();
|
loadPrinters();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error adding printer:', 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}`, {
|
const response = await fetch(`/api/printers/${printerId}`, {
|
||||||
method: 'DELETE',
|
method: 'DELETE',
|
||||||
headers: {
|
headers: {
|
||||||
'X-CSRF-Token': document.querySelector('meta[name="csrf-token"]')?.getAttribute('content')
|
'Content-Type': 'application/json'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if (!response.ok) {
|
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();
|
hidePrinterDetailModal();
|
||||||
|
showStatusMessage(result.message || 'Drucker erfolgreich gelöscht', 'success');
|
||||||
loadPrinters();
|
loadPrinters();
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Error deleting printer:', error);
|
console.error('Error deleting printer:', error);
|
||||||
alert('Fehler beim Löschen des Druckers');
|
showStatusMessage('Fehler beim Löschen des Druckers: ' + error.message, 'error');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user