Module: check_mk
Branch: master
Commit: 956e12fb5a3c30625cfa95e299c23a5707b5d182
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=956e12fb5a3c30…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Tue Aug 30 15:12:55 2016 +0200
Graph controls / label can now be enabled or disabled through painter options
---
web/htdocs/views.py | 27 +++++++++++++++++++++------
web/plugins/views/painters.py | 14 +++++++++-----
2 files changed, 30 insertions(+), 11 deletions(-)
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index 7a107b8..67f1652 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -880,10 +880,10 @@ def show_painter_options(painter_options):
html.write('<div class="view_form" id="painteroptions"
style="display: none">')
html.begin_form("painteroptions")
forms.header(_("Display Options"))
- for on in painter_options:
- vs = multisite_painter_options[on]['valuespec']
+ for name in painter_options:
+ vs = get_painter_option_valuespec(multisite_painter_options[name])
forms.section(vs.title())
- vs.render_input('po_' + on, get_painter_option(on))
+ vs.render_input('po_' + name, get_painter_option(name))
forms.end()
html.button("painter_options", _("Submit"), "submit")
@@ -1396,10 +1396,14 @@ def view_options(viewname):
if html.has_var_prefix(var_prefix):
# Get new value for the option from the value spec
- vs = opt['valuespec']
+ vs = get_painter_option_valuespec(opt)
value = vs.from_html_vars(var_prefix)
v[option_name] = value
+ # TODO: This is nasty. The multisite_painter_options should really not
+ # be modified during user requests! They should be handled as static
+ # configured data structures and the user specific things should be
+ # kept separated.
opt['value'] = value # make globally present for painters
if not have_old_value or v[option_name] != old_value:
@@ -2474,14 +2478,25 @@ def create_dict_key(value):
else:
return value
+
def get_painter_option(name):
opt = multisite_painter_options[name]
if "forced_value" in opt:
return opt["forced_value"]
+
elif not config.may("general.painter_options"):
- return opt['valuespec'].default_value()
+ return get_painter_option_valuespec(opt).default_value()
+
else:
- return opt.get("value", opt['valuespec'].default_value())
+ return opt.get("value",
get_painter_option_valuespec(opt).default_value())
+
+
+def get_painter_option_valuespec(opt):
+ if type(lambda: None) == type(opt["valuespec"]):
+ return opt["valuespec"]()
+ else:
+ return opt["valuespec"]
+
def get_host_tags(row):
if type(row.get("host_custom_variables")) == dict:
diff --git a/web/plugins/views/painters.py b/web/plugins/views/painters.py
index 5d94de3..459c931 100644
--- a/web/plugins/views/painters.py
+++ b/web/plugins/views/painters.py
@@ -959,7 +959,7 @@ def paint_time_graph_cmk(row, show_timeranges=False):
"service_description" : row.get("service_description",
"_HOST_"),
})
graph_data_range = { "time_range" :
get_graph_timerange_from_painter_options() }
- graph_render_options = {}
+ graph_render_options = get_graph_render_options_from_painter_options()
if html.is_mobile():
graph_render_options.update({
@@ -987,10 +987,14 @@ def paint_time_graph_cmk(row, show_timeranges=False):
show_timeranges)
+def get_graph_render_options_from_painter_options():
+ return get_painter_option("graph_render_options")
+
+
def get_graph_timerange_from_painter_options():
- timerange_spec = get_painter_option("pnp_timerange")
- vs = multisite_painter_options["pnp_timerange"]['valuespec']
- return map(int, vs.compute_range(timerange_spec)[0])
+ value = get_painter_option("pnp_timerange")
+ vs =
get_painter_option_valuespec(multisite_painter_options["pnp_timerange"])
+ return map(int, vs.compute_range(value)[0])
def paint_time_graph_pnp(row):
@@ -1025,7 +1029,7 @@ def paint_time_graph_pnp(row):
multisite_painters["svc_pnpgraph" ] = {
"title" : _("Service Graphs"),
"columns" : [ "host_name", "service_description",
"service_perf_data", "service_metrics",
"service_check_command" ],
- "options" : [ 'pnp_timerange' ],
+ "options" : [ "pnp_timerange", "graph_render_options",
],
"paint" : paint_time_graph,
"printable" : "time_graph",
}