Version 2.7.5: jede Aenderung nennt alt und neu

This commit is contained in:
alientim committed 2026-09-12 00:43:09 +02:00
1 parent c639f4f507
commit dc94a8e666
9 files changed
+162 -22

No files matched your search

+36 -2
View File
@@ -173,6 +173,9 @@ def update_subnet(subnet_id: int):
flash(problem, "danger")
return redirect(url_for("dhcp.overview"))
# Vor der Aenderung lesen -- danach ist der alte Stand weg, und "Subnetz
# gespeichert" allein sagt nicht, was vorher eingestellt war.
vorher = Database.one(conn, "SELECT * FROM dhcp_subnets WHERE id=?", (subnet_id,))
with transaction():
conn.execute(
"UPDATE dhcp_subnets SET interface=?, range_start=?, range_end=?, gateway=?, dns=?, "
@@ -189,7 +192,26 @@ def update_subnet(subnet_id: int):
subnet_id,
),
)
_audit("dhcp.subnet_updated", str(subnet_id), severity="notice")
nachher = Database.one(conn, "SELECT * FROM dhcp_subnets WHERE id=?", (subnet_id,))
_audit(
"dhcp.subnet_updated",
f"{interface} {start}-{end}",
audit.diff(
vorher,
nachher,
felder=(
("interface", "Schnittstelle"),
("range_start", "Von"),
("range_end", "Bis"),
("gateway", "Gateway"),
("dns", "DNS"),
("comment", "Kommentar"),
("enabled", "Aktiv"),
),
)
or "keine inhaltliche Änderung",
severity="notice",
)
flash("Subnetz gespeichert.", "success")
return _write_and_redirect()
@@ -395,6 +417,7 @@ def add_reservation():
)
return redirect(url_for("dhcp.overview"))
vorher = Database.one(conn, "SELECT * FROM dhcp_reservations WHERE mac=?", (mac,))
with transaction():
conn.execute(
"INSERT INTO dhcp_reservations (mac, ip, hostname, comment, created_at) "
@@ -407,7 +430,18 @@ def add_reservation():
(request.form.get("comment") or "").strip(),
),
)
_audit("dhcp.reservation_saved", f"{mac} -> {ip}", severity="notice")
nachher = Database.one(conn, "SELECT * FROM dhcp_reservations WHERE mac=?", (mac,))
_audit(
"dhcp.reservation_saved",
mac,
audit.diff(
vorher,
nachher,
felder=(("ip", "IP"), ("hostname", "Hostname"), ("comment", "Kommentar")),
)
or f"neu angelegt: {ip}",
severity="notice",
)
flash("Reservierung gespeichert.", "success")
return _write_and_redirect()
+2 -2
View File
@@ -359,9 +359,9 @@ def save_form(token: str):
# Zwei Zeilen: oben, was ein Mensch liest; unten die Pruefsumme, die
# niemand liest, aber jeder vergleichen koennen muss. In einer einzigen
# Zeile drueckte der Hash den Rest aus der Spalte.
kopf = f"{'Signiert' if unterschriften else 'Gespeichert'}: {wohin} ({ziel_mount.label})"
kopf = f"{'Signiert' if unterschriften else 'Gespeichert'}: {wohin}"
if unterschriften:
kopf += f" – angegeben von: {', '.join(unterschriften)}"
kopf += f" von: {', '.join(unterschriften)}"
beschreibung = f"{kopf}{chr(10)}sha256={pruefsumme}"
_audit(
"fileshare.form_signed" if unterschriften else "fileshare.form_saved",
+6
View File
@@ -677,6 +677,12 @@ def update_device(
("Port", str(row["port"] or ""), clean_port),
("Aktiv", str(bool(row["is_active"])), str(bool(is_active))),
("Automatischer Neustart", str(bool(row["auto_restart"])), str(bool(auto_restart))),
# Diese vier fehlten: eine geaenderte Kategorie oder ein anderer
# SSH-Port stand nirgends, obwohl beides das Verhalten aendert.
("SSH-Port", str(row["ssh_port"] or ""), str(validate_ssh_port(ssh_port) or "")),
("Zugangsdaten", str(row["credential_id"] or ""), str(credential_id or "")),
("Kategorie", str(row["category"] or ""), (category or "").strip()),
("Standort", str(row["location"] or ""), (location or "").strip()),
):
if before != after:
changes.append(f"{label}: {before or '-'} -> {after or '-'}")