Module: check_mk
Branch: master
Commit: 2b4f2b357aa0f6462c4b590195e5a7030e0e1dff
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=2b4f2b357aa0f6…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Jan 20 15:06:05 2012 +0100
WATO: Only showing wato folder filter when at least one folder exists; Only showing context button when at least one host/folder is defined in wato
---
.bugs/492 | 7 +++++--
web/htdocs/views.py | 3 ++-
web/htdocs/wato.py | 20 +++++++++++++++++++-
web/plugins/views/wato.py | 2 +-
4 files changed, 27 insertions(+), 5 deletions(-)
diff --git a/.bugs/492 b/.bugs/492
index c93291c..f9b2f15 100644
--- a/.bugs/492
+++ b/.bugs/492
@@ -1,11 +1,14 @@
Title: Hide WATO filter if no WATO is used
Component: multisite
+State: done
+Class: feature
Benefit: 1
-State: open
Cost: 1
Date: 2011-12-13 16:46:00
Targetversion: future
-Class: feature
If you have no folders defined then the WATO filter is
useless and should not appear in the filter form.
+
+2012-01-20 15:05:26: changed state open -> done
+Added check if at least one folder exists in the root folder
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index 1a665f7..9f1d56e 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -1640,7 +1640,8 @@ def show_context_links(thisview, active_filters):
if html.has_var("host") \
and config.wato_enabled \
and config.may("wato.use") \
- and (config.may("wato.hosts") or config.may("wato.seeall")):
+ and (config.may("wato.hosts") or config.may("wato.seeall")) \
+ and wato.using_wato_hosts():
host = html.var("host")
if host:
url = wato.api.link_to_host(host)
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index a0df5b0..2d73959 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -863,7 +863,6 @@ def mode_folder(phase):
"be used to navigate in the status GUI. Attributes can be inherited along the "
"paths of that tree. The usage of folders is optional."))])
-
def prepare_folder_info():
declare_host_tag_attributes() # create attributes out of tag definitions
declare_site_attribute() # create attribute for distributed WATO
@@ -9467,6 +9466,25 @@ def call_hook_roles_saved(roles):
# | Functions needed at various places |
# '----------------------------------------------------------------------'
+# Returns true when at least one folder is defined in WATO
+def have_folders():
+ root_folder = load_folder(root_dir)
+ if len(root_folder[".folders"]) > 0:
+ return True
+ return False
+
+# Returns true if at least one host or folder exists in the wato root
+def using_wato_hosts():
+ root_folder = load_folder(root_dir)
+ if len(root_folder[".folders"]) > 0:
+ return True
+
+ load_hosts(root_folder)
+ if len(root_folder[".hosts"]) > 0:
+ return True
+
+ return False
+
def host_status_button(hostname, viewname):
html.context_button(_("Status"),
"view.py?" + htmllib.urlencode_vars([
diff --git a/web/plugins/views/wato.py b/web/plugins/views/wato.py
index e684c19..367e12f 100644
--- a/web/plugins/views/wato.py
+++ b/web/plugins/views/wato.py
@@ -33,7 +33,7 @@ class FilterWatoFile(Filter):
self.last_wato_data_update = None
def available(self):
- return config.wato_enabled
+ return config.wato_enabled and wato.have_folders()
def load_wato_data(self):
self.tree = wato.api.get_folder_tree()
Module: check_mk
Branch: master
Commit: 6a82d6e925f6a88f4b7dc67209529b925fc56b27
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6a82d6e925f6a8…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Jan 20 15:54:16 2012 +0100
Hiding site filter in multisite views in single site setups
---
ChangeLog | 1 +
web/htdocs/views.py | 31 ++++++++++++++++++++++---------
web/plugins/views/filters.py | 3 +++
3 files changed, 26 insertions(+), 9 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 3f17220..bae1265 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -43,6 +43,7 @@
* New painter for normal and retry check interval (added to detail views)
* Site filter shows "(local)" in case of non multi-site setup
* Made "wato folder" columns sortable
+ * Hiding site filter in multisite views in single site setups
* FIX: Fixed auth problem when following logwatch icon links while using
the form based auth
* FIX: Fix problem with Umlaut in contact alias
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index 9f1d56e..899e887 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -108,15 +108,20 @@ def show_filter_form(is_open, filters):
s.sort()
col = 0
for sort_index, title, f in s:
- if col == 0:
- html.write("<tr>")
- html.write("<td class=legend>%s</td>" % title)
- html.write("<td class=content>")
- f.display()
- html.write("</td>")
- if col == config.filter_columns - 1:
- html.write("</tr>\n")
- col = (col + 1) % config.filter_columns
+ if not f.visible():
+ html.write('<div style="display:none">')
+ f.display()
+ html.write('</div>')
+ else:
+ if col == 0:
+ html.write("<tr>")
+ html.write("<td class=legend>%s</td>" % title)
+ html.write("<td class=content>")
+ f.display()
+ html.write("</td>")
+ if col == config.filter_columns - 1:
+ html.write("</tr>\n")
+ col = (col + 1) % config.filter_columns
if col == 1:
html.write("<td class=legend></td>\n<td class=content></td></tr>\n")
html.write('<tr><td class="legend button" colspan=%d>' % (config.filter_columns * 2))
@@ -191,6 +196,14 @@ class Filter:
def available(self):
return True
+ # Some filters can be invisible. This is useful to hide filters which have always
+ # the same value but can not be removed using available() because the value needs
+ # to be set during runtime.
+ # A good example is the "site" filter which does not need to be available to the
+ # user in single site setups.
+ def visible(self):
+ return True
+
def display(self):
raise MKInternalError("Incomplete implementation of filter %s '%s': missing display()" % \
(self.name, self.title))
diff --git a/web/plugins/views/filters.py b/web/plugins/views/filters.py
index aac424e..e8e59b4 100644
--- a/web/plugins/views/filters.py
+++ b/web/plugins/views/filters.py
@@ -325,6 +325,9 @@ class FilterSite(Filter):
Filter.__init__(self, name, _("Site"), None, ["site"], [])
self.enforce = enforce
+ def visible(self):
+ return config.is_multisite()
+
def display(self):
site_selector(html, "site", self.enforce)