def filter(self, value: FilterHTTPVariables) -> FilterHeader: if self.ident == "hostgroupvisibility": # jump directly because selection is empty filter return self.livestatus_query(value) if all(value.values()): # everything on, skip filter return "" return self.livestatus_query(value)
def log_class_filter(value: FilterHTTPVariables) -> FilterHeader: if not any(value.values()): return "Limit: 0\n" # no class allowed toggled = [ request_var[-1] for request_var, value in value.items() if value == "on" ] return lq_logic("Filter: class =", toggled, "Or")
def checkbox_row( options: List[Tuple[str, str]], value: FilterHTTPVariables, title: Optional[str] = None ) -> None: html.begin_checkbox_group() if title: html.write_text(title) checkbox_default = not any(value.values()) for var, text in options: html.checkbox(var, bool(value.get(var, checkbox_default)), label=text) html.end_checkbox_group()
def log_alerts_filter(value: FilterHTTPVariables) -> FilterHeader: if not any(value.values()): return "Limit: 0\n" # no allowed state headers = [] for request_var, toggled in value.items(): if toggled: log_type = "HOST" if request_var[-2] == "h" else "SERVICE" state = request_var[-1] headers.append( lq_logic("Filter:", [f"log_type ~ {log_type} .*", f"log_state = {state}"], "And")) return "".join(headers) + ("Or: %d\n" % len(headers))
def host_state_filter(value: FilterHTTPVariables) -> FilterHeader: if not any(value.values()): # empty selection discard return "" headers = [] for request_var, toggled in value.items(): if toggled: continue if request_var == "hstp": headers.append("Filter: host_has_been_checked = 1\n") else: headers.append("Filter: host_state = %s\n" "Filter: host_has_been_checked = 1\n" "And: 2\nNegate:\n" % request_var[-1]) return "".join(headers)
def service_state_filter(prefix: str, value: FilterHTTPVariables) -> FilterHeader: if not any(value.values()): # empty selection discard return "" headers = [] for request_var, toggled in value.items(): if toggled: continue if request_var.endswith("p"): headers.append("Filter: service_has_been_checked = 1\n") else: if prefix == "hd": column = "service_last_hard_state" else: column = "service_state" headers.append("Filter: %s = %s\n" "Filter: service_has_been_checked = 1\n" "And: 2\nNegate:\n" % (column, request_var[-1])) return "".join(headers)
def empty_hostgroup_filter(value: FilterHTTPVariables) -> FilterHeader: if any(value.values()): # Selected to show empty return "" return "Filter: hostgroup_num_hosts > 0\n"