diff --git a/app/services/server_service.py b/app/services/server_service.py index 2b0c99f..fa33555 100644 --- a/app/services/server_service.py +++ b/app/services/server_service.py @@ -125,11 +125,17 @@ def list_servers(db, filters, page=1, per_page=50, sort="hostname", sort_dir="as if filters.get("os"): where.append("s.os_family = :os"); params["os"] = filters["os"] if filters.get("zone"): - if filters["zone"] == "__null__": + z = filters["zone"] + if z == "__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: - where.append("s.zone_id = (SELECT id FROM zones WHERE name=:zone LIMIT 1)") - params["zone"] = filters["zone"] + where.append("s.zone_id IN (SELECT id FROM zones WHERE LOWER(name)=LOWER(:zone))") + params["zone"] = z if filters.get("owner"): where.append("s.patch_os_owner = :owner"); params["owner"] = filters["owner"] if filters.get("licence"):