fix(servers): filtre Zone=LAN match aussi zone_id IS NULL (la colonne affiche 'LAN' par defaut quand zone vide) + comparaison case-insensitive sur z.name

This commit is contained in:
Pierre & Lumière 2026-05-05 16:05:25 +02:00
parent 9b0c596f2c
commit 785916246f

View File

@ -125,11 +125,17 @@ def list_servers(db, filters, page=1, per_page=50, sort="hostname", sort_dir="as
if filters.get("os"): if filters.get("os"):
where.append("s.os_family = :os"); params["os"] = filters["os"] where.append("s.os_family = :os"); params["os"] = filters["os"]
if filters.get("zone"): if filters.get("zone"):
if filters["zone"] == "__null__": z = filters["zone"]
if z == "__null__":
where.append("s.zone_id IS NULL") where.append("s.zone_id IS NULL")
elif z.lower() == "lan":
# 'LAN' = default affichage des serveurs sans zone définie
# OU rattachés à une vraie zone nommée 'LAN' en BD
where.append("(s.zone_id IS NULL OR s.zone_id IN "
"(SELECT id FROM zones WHERE LOWER(name)='lan'))")
else: else:
where.append("s.zone_id = (SELECT id FROM zones WHERE name=:zone LIMIT 1)") where.append("s.zone_id IN (SELECT id FROM zones WHERE LOWER(name)=LOWER(:zone))")
params["zone"] = filters["zone"] params["zone"] = z
if filters.get("owner"): if filters.get("owner"):
where.append("s.patch_os_owner = :owner"); params["owner"] = filters["owner"] where.append("s.patch_os_owner = :owner"); params["owner"] = filters["owner"]
if filters.get("licence"): if filters.get("licence"):