Skip to content

Commit f27c2c0

Browse files
committed
fix: Filter out directives with None or empty names from UI
- Add validation in Devices.frontend() to exclude directives with null/empty names - Add validation in Devices.directive_names() to exclude invalid directive names - Prevents 'None' from appearing as an option in query type dropdown - Ensures only valid directives with proper names are exposed to frontend - Improves UI cleanliness and prevents user confusion
1 parent 191f9eb commit f27c2c0

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

hyperglass/models/config/devices.py

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,10 @@ def directive_plugins(self: "Devices") -> t.Dict[Path, t.Tuple[str]]:
344344

345345
def directive_names(self) -> t.List[str]:
346346
"""Get all directive names for all devices."""
347-
return list({directive.name for device in self for directive in device.directives})
347+
return list({
348+
directive.name for device in self for directive in device.directives
349+
if directive.name is not None and directive.name.strip() != ""
350+
})
348351

349352
def frontend(self: "Devices") -> t.List[t.Dict[str, t.Any]]:
350353
"""Export grouped devices for UIParameters."""
@@ -361,7 +364,10 @@ def frontend(self: "Devices") -> t.List[t.Dict[str, t.Any]]:
361364
f"/images/{device.avatar.name}" if device.avatar is not None else None
362365
),
363366
"description": device.description,
364-
"directives": [d.frontend() for d in device.directives],
367+
"directives": [
368+
d.frontend() for d in device.directives
369+
if d.name is not None and d.name.strip() != ""
370+
],
365371
}
366372
for device in self
367373
if device.group == group

0 commit comments

Comments
 (0)