Module: check_mk
Branch: master
Commit: 4e49822189a3041af04bb00dcce6193c2be2a1ff
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=4e49822189a304…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Apr 23 17:09:54 2019 +0200
Fix missing availability / combined graphs context buttons
CMK-2014
Change-Id: I1478df99c615abf2b84a3f362fe1e415eddd7040
---
cmk/gui/plugins/views/utils.py | 2 +-
cmk/gui/views.py | 39 +++++++++++++++++++++++++--------------
2 files changed, 26 insertions(+), 15 deletions(-)
diff --git a/cmk/gui/plugins/views/utils.py b/cmk/gui/plugins/views/utils.py
index 5d892d7..72bed9f 100644
--- a/cmk/gui/plugins/views/utils.py
+++ b/cmk/gui/plugins/views/utils.py
@@ -518,7 +518,7 @@ class DataSource(object):
@abc.abstractproperty
def table(self):
# type: () -> RowTable
- """Returns a table objec that can provide a list of rows for the
provided
+ """Returns a table object that can provide a list of rows for the
provided
query using the query() method."""
raise NotImplementedError()
diff --git a/cmk/gui/views.py b/cmk/gui/views.py
index 19f1b5a..d837617 100644
--- a/cmk/gui/views.py
+++ b/cmk/gui/views.py
@@ -355,23 +355,14 @@ class GUIViewRenderer(ViewRenderer):
weblib.init_selection()
if self._show_buttons:
- show_combined_graphs_button = \
- ("host" in self.view.datasource.infos or "service" in
self.view.datasource.infos) and \
- (isinstance(self.view.datasource.table, str)) and \
- ("host" in self.view.datasource.table or "service" in
self.view.datasource.table)
_show_context_links(
- view_spec,
+ self.view,
show_filters,
# Take into account: permissions, display_options
row_count > 0 and command_form,
# Take into account: layout capabilities
layout.can_display_checkboxes and not
view_spec.get("force_checkboxes"),
show_checkboxes,
- # Show link to availability
- self.view.datasource.table in ["hosts", "services"]
or
- "aggr" in self.view.datasource.infos,
- # Show link to combined graphs
- show_combined_graphs_button,
)
# User errors in filters
html.show_user_errors()
@@ -1665,11 +1656,13 @@ def ajax_set_viewoption():
painter_options.save_to_config(view_name)
-def _show_context_links(thisview, show_filters, enable_commands, enable_checkboxes,
show_checkboxes,
- show_availability, show_combined_graphs):
+def _show_context_links(view, show_filters, enable_commands, enable_checkboxes,
show_checkboxes):
if html.output_format != "html":
return
+ # TODO: Clean this up
+ thisview = view.spec
+
html.begin_context_buttons()
# That way if no button is painted we avoid the empty container
@@ -1790,10 +1783,11 @@ def _show_context_links(thisview, show_filters, enable_commands,
enable_checkbox
_("Edit View"), url, "edit", id_="edit",
bestof=config.context_buttons_to_show)
if display_options.enabled(display_options.E):
- if show_availability and config.user.may("general.see_availability"):
+ if _show_availability_context_button(view):
html.context_button(
_("Availability"), html.makeuri([("mode",
"availability")]), "availability")
- if show_combined_graphs and config.combined_graphs_available():
+
+ if _show_combined_graphs_context_button(view):
html.context_button(
_("Combined graphs"),
html.makeuri(
@@ -1811,6 +1805,23 @@ def _show_context_links(thisview, show_filters, enable_commands,
enable_checkbox
html.end_context_buttons()
+def _show_availability_context_button(view):
+ if not config.user.may("general.see_availability"):
+ return False
+
+ if "aggr" in view.datasource.infos:
+ return True
+
+ return view.datasource.ident in ["hosts", "services"]
+
+
+def _show_combined_graphs_context_button(view):
+ if not config.combined_graphs_available():
+ return False
+
+ return view.datasource.ident in ["hosts", "services",
"hostsbygroup", "servicesbygroup"]
+
+
def _link_to_folder_by_path(path):
# type: (str) -> str
"""Return an URL to a certain WATO folder when we just know its
path"""