diff --git a/srv/poe_manager/app.py b/srv/poe_manager/app.py index 8b4b179..611746a 100644 --- a/srv/poe_manager/app.py +++ b/srv/poe_manager/app.py @@ -148,7 +148,7 @@ def devices(): if request.method == 'POST': # ----------------------- - # Inline-Add + # Gerät hinzufügen # ----------------------- if 'add_device' in request.form: if not current_user.is_admin: @@ -166,6 +166,18 @@ def devices(): flash("Alle Felder müssen ausgefüllt sein!") return redirect(url_for('devices')) + # Prüfen auf doppelte MAC + mac_device = conn.execute("SELECT name FROM devices WHERE mac=?", (mac,)).fetchone() + if mac_device: + flash(f"MAC-Adresse existiert bereits für Gerät '{mac_device['name']}'!") + return redirect(url_for('devices')) + + # Prüfen auf doppelte IP + ip_device = conn.execute("SELECT name FROM devices WHERE rpi_ip=?", (rpi_ip,)).fetchone() + if ip_device: + flash(f"IP-Adresse existiert bereits für Gerät '{ip_device['name']}'!") + return redirect(url_for('devices')) + try: conn.execute(""" INSERT INTO devices (mac, rpi_ip, port, name, switch_hostname, is_active) @@ -174,10 +186,10 @@ def devices(): conn.commit() flash(f"Gerät {name} hinzugefügt.") except sqlite3.IntegrityError: - flash("MAC existiert bereits oder Eingabefehler!") + flash("Fehler beim Hinzufügen des Geräts!") # ----------------------- - # Inline-Edit + # Gerät bearbeiten # ----------------------- elif 'edit_device' in request.form: if not current_user.is_admin: @@ -196,6 +208,18 @@ def devices(): flash("Alle Felder müssen ausgefüllt sein!") return redirect(url_for('devices')) + # Prüfen auf doppelte MAC außer das aktuelle Gerät + mac_device = conn.execute("SELECT name FROM devices WHERE mac=? AND mac<>?", (mac, old_mac)).fetchone() + if mac_device: + flash(f"MAC-Adresse existiert bereits für Gerät '{mac_device['name']}'!") + return redirect(url_for('devices')) + + # Prüfen auf doppelte IP außer das aktuelle Gerät + ip_device = conn.execute("SELECT name FROM devices WHERE rpi_ip=? AND mac<>?", (rpi_ip, old_mac)).fetchone() + if ip_device: + flash(f"IP-Adresse existiert bereits für Gerät '{ip_device['name']}'!") + return redirect(url_for('devices')) + try: conn.execute(""" UPDATE devices @@ -205,10 +229,10 @@ def devices(): conn.commit() flash(f"Gerät {name} aktualisiert.") except sqlite3.IntegrityError: - flash("MAC existiert bereits oder Eingabefehler!") + flash("Fehler beim Aktualisieren des Geräts!") # ----------------------- - # Inline-Delete + # Gerät löschen # ----------------------- elif 'delete_device' in request.form: if not current_user.is_admin: