srv/poe_manager/app.py aktualisiert

This commit is contained in:
2025-10-07 07:57:15 +02:00
parent a24b09e18d
commit 02122f966a

View File

@@ -148,7 +148,7 @@ def devices():
if request.method == 'POST': if request.method == 'POST':
# ----------------------- # -----------------------
# Inline-Add # Gerät hinzufügen
# ----------------------- # -----------------------
if 'add_device' in request.form: if 'add_device' in request.form:
if not current_user.is_admin: if not current_user.is_admin:
@@ -166,6 +166,18 @@ def devices():
flash("Alle Felder müssen ausgefüllt sein!") flash("Alle Felder müssen ausgefüllt sein!")
return redirect(url_for('devices')) 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: try:
conn.execute(""" conn.execute("""
INSERT INTO devices (mac, rpi_ip, port, name, switch_hostname, is_active) INSERT INTO devices (mac, rpi_ip, port, name, switch_hostname, is_active)
@@ -174,10 +186,10 @@ def devices():
conn.commit() conn.commit()
flash(f"Gerät {name} hinzugefügt.") flash(f"Gerät {name} hinzugefügt.")
except sqlite3.IntegrityError: 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: elif 'edit_device' in request.form:
if not current_user.is_admin: if not current_user.is_admin:
@@ -196,6 +208,18 @@ def devices():
flash("Alle Felder müssen ausgefüllt sein!") flash("Alle Felder müssen ausgefüllt sein!")
return redirect(url_for('devices')) 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: try:
conn.execute(""" conn.execute("""
UPDATE devices UPDATE devices
@@ -205,10 +229,10 @@ def devices():
conn.commit() conn.commit()
flash(f"Gerät {name} aktualisiert.") flash(f"Gerät {name} aktualisiert.")
except sqlite3.IntegrityError: 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: elif 'delete_device' in request.form:
if not current_user.is_admin: if not current_user.is_admin: