Module: check_mk
Branch: master
Commit: 0e3604a5a376eff70b798569b1f1642d8959c14a
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=0e3604a5a376ef…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Dec 16 16:58:28 2016 +0100
Completed rule/ruleset search form
Change-Id: I30ae9ad11dfbd79066aa301819f11513b0aaf89d
---
web/htdocs/wato.css | 8 ++++++++
web/htdocs/wato.py | 8 +++++++-
web/htdocs/watolib.py | 14 ++++++++++----
3 files changed, 25 insertions(+), 5 deletions(-)
diff --git a/web/htdocs/wato.css b/web/htdocs/wato.css
index d6f86f5..075be55 100644
--- a/web/htdocs/wato.css
+++ b/web/htdocs/wato.css
@@ -646,6 +646,14 @@ table.validationerror img {
background-color: #fcc;
}
+.wato table.data.ruleset.oddeven > tbody > tr.matches_search:nth-child(odd) {
+ background-color: #bfd;
+}
+
+.wato table.data.ruleset.oddeven > tbody > tr.matches_search:nth-child(even) {
+ background-color: #afb;
+}
+
.wato table.data.ruleset tr.ineffective td * {
color: #999;
text-shadow: 0px 1px 0px #fff;
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 35f8021..223e0e7 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -12107,7 +12107,7 @@ def mode_rulesets(phase, group=None):
url_vars.append(("host", only_host))
if only_ineffective:
url_vars.append(("highlight_ineffective", "1"))
- view_url = folder_preserving_link(url_vars)
+ view_url = html.makeuri(url_vars)
html.a(ruleset.title(), href=view_url, class_="nonzero" if
ruleset.is_empty() else "zero")
html.span("." * 100, class_="dots")
@@ -12347,6 +12347,8 @@ def mode_edit_ruleset(phase):
match_keys = set([]) # in case if match = "dict"
last_folder = None
+ search_options = ModeRuleSearch().search_options
+
skip_this_folder = False
all_hosts = Host.all()
for folder, rulenr, rule in ruleset.get_rules():
@@ -12376,10 +12378,14 @@ def mode_edit_ruleset(phase):
css = []
if rule.is_disabled():
css.append("disabled")
+
if html.var("highlight_ineffective"):
if rule.is_ineffective(all_hosts):
css.append("ineffective")
+ if search_options and rule.matches_search(search_options):
+ css.append("matches_search")
+
table.row(css=" ".join(css) if css else None)
# Rule matching
diff --git a/web/htdocs/watolib.py b/web/htdocs/watolib.py
index 3a5493d..56cd523 100644
--- a/web/htdocs/watolib.py
+++ b/web/htdocs/watolib.py
@@ -6235,9 +6235,15 @@ class Ruleset(object):
if rule.matches_search(search_options):
self.search_matching_rules.append(rule)
+ if "fulltext" not in search_options:
+ return bool(self.search_matching_rules)
+
if not match_one_of_search_expression(search_options, "fulltext",
- [self.name(), self.title(), self.help()]):
- return False
+ [self.name(), self.title(), self.help()]):
+ if self.search_matching_rules:
+ return True
+ else:
+ return False
return True
@@ -6376,7 +6382,7 @@ def match_search_expression(search_options, attr_name, search_in):
if attr_name not in search_options:
return True # not searched for this. Matching!
- return search_in and re.search(search_options[attr_name], search_in, re.I)
+ return search_in and re.search(search_options[attr_name], search_in, re.I) != None
def match_one_of_search_expression(search_options, attr_name, search_in_list):
@@ -6656,7 +6662,7 @@ class Rule(object):
if not match_one_of_search_expression(search_options, "rule_host_list",
self.host_list()):
return False
- if not match_one_of_search_expression(search_options, "rule_item_list",
self.item_list() or []):
+ if self.item_list() and not match_one_of_search_expression(search_options,
"rule_item_list", self.item_list()):
return False
to_search = [