lists.checkmk.com
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2024
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
List overview
Download
Checkmk git commits
October 2014
----- 2024 -----
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
checkmk-commits@lists.checkmk.com
6 participants
310 discussions
Start a n
N
ew thread
Check_MK Git: check_mk: Detect syntax error while loading reporting module
by Mathias Kettner
Module: check_mk Branch: master Commit: a96e6f1ddada967922c52bae8cd9c987d48f3901 URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=a96e6f1ddada96…
Author: Mathias Kettner <mk(a)mathias-kettner.de> Date: Wed Oct 8 09:58:08 2014 +0200 Detect syntax error while loading reporting module --- web/htdocs/index.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/web/htdocs/index.py b/web/htdocs/index.py index eeeb2be..f4c85b0 100644 --- a/web/htdocs/index.py +++ b/web/htdocs/index.py @@ -38,7 +38,9 @@ import livestatus import defaults, config, login, userdb, hooks, visuals, default_permissions try: import reporting -except 1: +except SyntaxError: + raise +except: reporting = None from html_mod_python import *
9 years, 8 months
1
0
0
0
Check_MK Git: check_mk: forms: honor optional keys when editing a dictionary
by Mathias Kettner
Module: check_mk Branch: master Commit: 29fee33cd8bd18b571fbbc3c074090650ead4c10 URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=29fee33cd8bd18…
Author: Mathias Kettner <mk(a)mathias-kettner.de> Date: Wed Oct 8 09:58:50 2014 +0200 forms: honor optional keys when editing a dictionary --- web/htdocs/forms.py | 69 ++++++++++++++++++++++++++++++--------------------- 1 file changed, 41 insertions(+), 28 deletions(-) diff --git a/web/htdocs/forms.py b/web/htdocs/forms.py index 1c0ae42..01f6ae2 100644 --- a/web/htdocs/forms.py +++ b/web/htdocs/forms.py @@ -61,7 +61,7 @@ def edit_dictionaries(dictionaries, value, focus=None, hover_help=True, if type(d) == list: sections.append((keyname, title or _("Properties"), d)) else: - sections.append((keyname, d.title() or title, d._elements)) # valuespec Dictionary + sections.append((keyname, d.title() or title, d)) # valuespec Dictionary new_value = value.copy() if html.var("filled_in") == formname and html.transaction_valid(): @@ -70,17 +70,26 @@ def edit_dictionaries(dictionaries, value, focus=None, hover_help=True, messages = [] for keyname, section_title, entries in sections: - new_value[keyname] = {} - for name, vs in entries: - if len(sections) == 1: - vp = varprefix - else: - vp = keyname + "_" + varprefix + if type(entries) == list: + new_value[keyname] = {} + for name, vs in entries: + if len(sections) == 1: + vp = varprefix + else: + vp = keyname + "_" + varprefix + try: + v = vs.from_html_vars(vp + name) + vs.validate_value(v, keyname + "_" + varprefix + name) + new_value[keyname][name] = v + except MKUserError, e: + messages.append("%s: %s" % (title, e.message)) + html.add_user_error(e.varname, e.message) + + else: try: - v = vs.from_html_vars(vp + name) - vs.validate_value(v, keyname + "_" + varprefix + name) - new_value[keyname][name] = v - except MKUserError, e: + new_value[keyname] = entries.from_html_vars(keyname) + entries.validate_value(new_value[keyname], keyname) + except: messages.append("%s: %s" % (title, e.message)) html.add_user_error(e.varname, e.message) @@ -103,23 +112,27 @@ def edit_dictionaries(dictionaries, value, focus=None, hover_help=True, html.begin_form(formname, method=method) for keyname, title, entries in sections: subvalue = value.get(keyname, {}) - header(title) - first = True - for name, vs in entries: - section(vs.title()) - html.help(vs.help()) - if name in subvalue: - v = subvalue[name] - else: - v = vs.default_value() - if len(sections) == 1: - vp = varprefix - else: - vp = keyname + "_" + varprefix - vs.render_input(vp + name, v) - if (not focus and first) or (name == focus): - vs.set_focus(vp + name) - first = False + if type(entries) == list: + header(title) + first = True + for name, vs in entries: + section(vs.title()) + html.help(vs.help()) + if name in subvalue: + v = subvalue[name] + else: + v = vs.default_value() + if len(sections) == 1: + vp = varprefix + else: + vp = keyname + "_" + varprefix + vs.render_input(vp + name, v) + if (not focus and first) or (name == focus): + vs.set_focus(vp + name) + first = False + else: + entries.render_input(keyname, subvalue, form=True) + end() if buttons:
9 years, 8 months
1
0
0
0
Check_MK Git: check_mk: visuals: Internal cleanup
by Lars Michelsen
Module: check_mk Branch: master Commit: 65b3a8098bb9cd40a18696b8ae9b46df32038514 URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=65b3a8098bb9cd…
Author: Lars Michelsen <lm(a)mathias-kettner.de> Date: Wed Oct 8 09:46:49 2014 +0200 visuals: Internal cleanup --- web/htdocs/dashboard.py | 4 ++-- web/htdocs/views.py | 2 +- web/htdocs/visuals.py | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/web/htdocs/dashboard.py b/web/htdocs/dashboard.py index 82e6739..97d7d9a 100644 --- a/web/htdocs/dashboard.py +++ b/web/htdocs/dashboard.py @@ -609,7 +609,7 @@ def page_edit_dashboards(): # '----------------------------------------------------------------------' def page_create_dashboard(): - visuals.page_create_visual('dashboards', _("Dashboard"), visuals.infos.keys()) + visuals.page_create_visual('dashboards', visuals.infos.keys()) #. # .--Dashb. Config-------------------------------------------------------. @@ -694,7 +694,7 @@ def page_create_view_dashlet_infos(): raise MKGeneralException(_('The given datasource is not supported')) # Create a new view by choosing the datasource and the single object types - visuals.page_create_visual('views', _("View"), views.multisite_datasources[ds_name]['infos'], + visuals.page_create_visual('views', views.multisite_datasources[ds_name]['infos'], next_url = html.makeuri_contextless([ ('name', html.var('name')), ('type', 'view'), diff --git a/web/htdocs/views.py b/web/htdocs/views.py index 7e276d6..e4baae0 100644 --- a/web/htdocs/views.py +++ b/web/htdocs/views.py @@ -278,7 +278,7 @@ def page_create_view_infos(): if ds_name not in multisite_datasources: raise MKGeneralException(_('The given datasource is not supported')) - visuals.page_create_visual('views', _("View"), multisite_datasources[ds_name]['infos'], + visuals.page_create_visual('views', multisite_datasources[ds_name]['infos'], next_url = 'edit_view.py?mode=create&datasource=%s&single_infos=%%s' % ds_name) #. diff --git a/web/htdocs/visuals.py b/web/htdocs/visuals.py index 2a2636c..d31b991 100644 --- a/web/htdocs/visuals.py +++ b/web/htdocs/visuals.py @@ -361,8 +361,8 @@ def page_list(what, title, visuals, custom_columns = [], # | Realizes the steps before getting to the editor (context type) | # '----------------------------------------------------------------------' -# FIXME: title is not needed, that's contained in visual_types -def page_create_visual(what, title, info_keys, next_url = None): +def page_create_visual(what, info_keys, next_url = None): + title = visual_types[what]['title'] what_s = what[:-1] # FIXME: Sort by (assumed) common usage
9 years, 8 months
1
0
0
0
Check_MK Git: check_mk: Fixed creating new view dashlets
by Lars Michelsen
Module: check_mk Branch: master Commit: 48e1f09cfc97d359ba0fd70dc0cbaa53567cd96e URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=48e1f09cfc97d3…
Author: Lars Michelsen <lm(a)mathias-kettner.de> Date: Wed Oct 8 09:52:56 2014 +0200 Fixed creating new view dashlets --- web/plugins/dashboard/dashlets.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/web/plugins/dashboard/dashlets.py b/web/plugins/dashboard/dashlets.py index 18f9ec1..f13fc4f 100644 --- a/web/plugins/dashboard/dashlets.py +++ b/web/plugins/dashboard/dashlets.py @@ -534,9 +534,7 @@ def dashlet_view_parameters(): def dashlet_view_render_input(dashlet): import views # FIXME: HACK, clean this up somehow views.load_views() - if html.var("id"): - # only needed in case of editing an existing view - views.transform_view_to_valuespec_value(dashlet) + views.transform_view_to_valuespec_value(dashlet) return views.render_view_config(dashlet) def dashlet_view_handle_input(ident, dashlet):
9 years, 8 months
1
0
0
0
Check_MK Git: check_mk: Fixed exception in views containing contact related information (e.g. host- and service notifications)
by Lars Michelsen
Module: check_mk Branch: master Commit: f187e5f4e5a17fafa538e4d975d93f84f4f5f1fd URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=f187e5f4e5a17f…
Author: Lars Michelsen <lm(a)mathias-kettner.de> Date: Wed Oct 8 09:32:09 2014 +0200 Fixed exception in views containing contact related information (e.g. host- and service notifications) --- web/plugins/visuals/infos.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/plugins/visuals/infos.py b/web/plugins/visuals/infos.py index 52899b8..f22219c 100644 --- a/web/plugins/visuals/infos.py +++ b/web/plugins/visuals/infos.py @@ -86,7 +86,7 @@ infos['downtime'] = { infos['contact'] = { 'title' : _('Contact'), 'single_spec' : [ - ('contact_name', TextUnicode( + ('log_contact_name', TextUnicode( title = _('Contact Name'), )), ]
9 years, 8 months
1
0
0
0
Check_MK Git: check_mk: Fixed favourite host/service views
by Lars Michelsen
Module: check_mk Branch: master Commit: f5078d87df5090006428e7ff13f0ca73b580a8e2 URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=f5078d87df5090…
Author: Lars Michelsen <lm(a)mathias-kettner.de> Date: Wed Oct 8 09:29:28 2014 +0200 Fixed favourite host/service views --- web/htdocs/config.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/web/htdocs/config.py b/web/htdocs/config.py index 00a0801..3bceae3 100644 --- a/web/htdocs/config.py +++ b/web/htdocs/config.py @@ -374,10 +374,10 @@ def get_role_permissions(): def load_stars(): - return set(config.load_user_file("favorites", [])) + return set(load_user_file("favorites", [])) def save_stars(stars): - config.save_user_file("favorites", list(stars)) + save_user_file("favorites", list(stars)) # Helper functions def load_user_file(name, deflt, lock = False):
9 years, 8 months
1
0
0
0
Check_MK Git: check_mk: Dashlets can now register custom validation functions; Fixed problem with url dashlet validation
by Lars Michelsen
Module: check_mk Branch: master Commit: 6e2f8cc17085d55bca0fd2234c14e9495e4f157d URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=6e2f8cc17085d5…
Author: Lars Michelsen <lm(a)mathias-kettner.de> Date: Wed Oct 8 09:28:04 2014 +0200 Dashlets can now register custom validation functions; Fixed problem with url dashlet validation --- web/htdocs/dashboard.py | 1 + web/plugins/dashboard/dashlets.py | 11 +++++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/web/htdocs/dashboard.py b/web/htdocs/dashboard.py index c75304b..82e6739 100644 --- a/web/htdocs/dashboard.py +++ b/web/htdocs/dashboard.py @@ -881,6 +881,7 @@ def page_edit_dashlet(): title = _('Properties'), render = 'form', optional_keys = dashlet_type.get('opt_params'), + validate = dashlet_type.get('validate_params'), elements = params, ) elif type(params) == type(lambda x: x): diff --git a/web/plugins/dashboard/dashlets.py b/web/plugins/dashboard/dashlets.py index ea44fad..18f9ec1 100644 --- a/web/plugins/dashboard/dashlets.py +++ b/web/plugins/dashboard/dashlets.py @@ -573,6 +573,12 @@ def dashlet_url(params): if params.get('show_in_iframe', True): return params['url'] +def dashlet_url_validate(value, varprefix): + if 'url' not in value and 'urlfunc' not in value: + raise MKUserError(varprefix, _('You need to provide either an URL or ' + 'the name of a python function to be used ' + 'for rendering the dashlet.')) + dashlet_types["url"] = { "title" : _("Custom URL"), "sort_index" : 80, @@ -580,7 +586,7 @@ dashlet_types["url"] = { "iframe_urlfunc" : dashlet_url, "allowed" : config.builtin_role_ids, "size" : (30, 10), - "parameters" : [ + "parameters" : [ ("url", TextAscii( title = _('URL'), size = 50, @@ -595,5 +601,6 @@ dashlet_types["url"] = { default_value = True, )), ], - "opt_params": ['url', 'urlfunc'], + "opt_params" : ['url', 'urlfunc'], + "validate_params" : dashlet_url_validate, }
9 years, 8 months
1
0
0
0
Check_MK Git: check_mk: Dashboard: Better exception handling for dashlet rendering
by Lars Michelsen
Module: check_mk Branch: master Commit: c425cf870216e9f448073f32fefe690a94c30f49 URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=c425cf870216e9…
Author: Lars Michelsen <lm(a)mathias-kettner.de> Date: Wed Oct 8 09:15:24 2014 +0200 Dashboard: Better exception handling for dashlet rendering --- web/htdocs/dashboard.py | 78 +++++++++++++++++++++++------------------------ 1 file changed, 39 insertions(+), 39 deletions(-) diff --git a/web/htdocs/dashboard.py b/web/htdocs/dashboard.py index 81c1610..c75304b 100644 --- a/web/htdocs/dashboard.py +++ b/web/htdocs/dashboard.py @@ -482,49 +482,49 @@ def render_dashlet(name, board, nr, dashlet, wato_folder, add_url_vars): bg = "" html.write('<div class="dashlet_inner%s" id="dashlet_inner_%d">' % (bg, nr)) - # Optional way to render a dynamic iframe URL - if "iframe_urlfunc" in dashlet_type: - url = dashlet_type["iframe_urlfunc"](dashlet) - if url != None: - dashlet["iframe"] = url - - elif "iframe_render" in dashlet_type: - dashlet["iframe"] = html.makeuri_contextless([ - ('name', name), - ('id', nr), - ('mtime', board['mtime'])] + add_url_vars, filename = "dashboard_dashlet.py") - - # The content is rendered only if it is fixed. In the - # other cases the initial (re)-size will paint the content. - if "render" in dashlet_type: - try: + try: + # Optional way to render a dynamic iframe URL + if "iframe_urlfunc" in dashlet_type: + url = dashlet_type["iframe_urlfunc"](dashlet) + if url != None: + dashlet["iframe"] = url + + elif "iframe_render" in dashlet_type: + dashlet["iframe"] = html.makeuri_contextless([ + ('name', name), + ('id', nr), + ('mtime', board['mtime'])] + add_url_vars, filename = "dashboard_dashlet.py") + + # The content is rendered only if it is fixed. In the + # other cases the initial (re)-size will paint the content. + if "render" in dashlet_type: render_dashlet_content(nr, dashlet) - except MKUserError, e: - html.write('Problem while rendering the dashlet: %s' % html.attrencode(e)) - except Exception, e: - if config.debug: - import traceback - html.write(traceback.format_exc().replace('\n', '<br>\n')) - else: - html.write('Problem while rendering the dashlet: %s' % html.attrencode(e)) - elif "content" in dashlet: # fixed content - html.write(dashlet["content"]) + elif "content" in dashlet: # fixed content + html.write(dashlet["content"]) - elif "iframe" in dashlet: # fixed content containing iframe - if not dashlet.get("reload_on_resize"): - url = add_wato_folder_to_url(dashlet["iframe"], wato_folder) + elif "iframe" in dashlet: # fixed content containing iframe + if not dashlet.get("reload_on_resize"): + url = add_wato_folder_to_url(dashlet["iframe"], wato_folder) + else: + url = 'about:blank' + + # Fix of iPad >:-P + html.write('<div style="width: 100%; height: 100%; -webkit-overflow-scrolling:touch; overflow: hidden;">') + html.write('<iframe id="dashlet_iframe_%d" allowTransparency="true" frameborder="0" width="100%%" ' + 'height="100%%" src="%s"> </iframe>' % (nr, url)) + html.write('</div>') + if dashlet.get("reload_on_resize"): + html.javascript('reload_on_resize["%d"] = "%s"' % + (nr, add_wato_folder_to_url(dashlet["iframe"], wato_folder))) + except MKUserError, e: + html.write('Problem while rendering the dashlet: %s' % html.attrencode(e)) + except Exception, e: + if config.debug: + import traceback + html.write(traceback.format_exc().replace('\n', '<br>\n')) else: - url = 'about:blank' - - # Fix of iPad >:-P - html.write('<div style="width: 100%; height: 100%; -webkit-overflow-scrolling:touch; overflow: hidden;">') - html.write('<iframe id="dashlet_iframe_%d" allowTransparency="true" frameborder="0" width="100%%" ' - 'height="100%%" src="%s"> </iframe>' % (nr, url)) - html.write('</div>') - if dashlet.get("reload_on_resize"): - html.javascript('reload_on_resize["%d"] = "%s"' % - (nr, add_wato_folder_to_url(dashlet["iframe"], wato_folder))) + html.write('Problem while rendering the dashlet: %s' % html.attrencode(e)) html.write("</div></div>\n")
9 years, 8 months
1
0
0
0
Check_MK Git: check_mk: Fixed fatal exception since latest changes
by Lars Michelsen
Module: check_mk Branch: master Commit: 26fe51c201c44bb1ce3e1820aa31a88295a8c7e5 URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=26fe51c201c44b…
Author: Lars Michelsen <lm(a)mathias-kettner.de> Date: Wed Oct 8 09:02:17 2014 +0200 Fixed fatal exception since latest changes --- web/htdocs/index.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/web/htdocs/index.py b/web/htdocs/index.py index eeeb2be..f90fbce 100644 --- a/web/htdocs/index.py +++ b/web/htdocs/index.py @@ -38,7 +38,7 @@ import livestatus import defaults, config, login, userdb, hooks, visuals, default_permissions try: import reporting -except 1: +except: reporting = None from html_mod_python import *
9 years, 8 months
1
0
0
0
Check_MK Git: check_mk: Finished abstraction of Add-To-Dashboard popup
by Mathias Kettner
Module: check_mk Branch: master Commit: 8a7e7b1c8fc55dc76332013250d603992725a6d3 URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=8a7e7b1c8fc55d…
Author: Mathias Kettner <mk(a)mathias-kettner.de> Date: Tue Oct 7 22:54:27 2014 +0200 Finished abstraction of Add-To-Dashboard popup --- web/htdocs/dashboard.py | 52 +++++++++++----------------------------------- web/htdocs/index.py | 2 +- web/htdocs/js/checkmk.js | 3 ++- web/htdocs/views.py | 3 +++ web/htdocs/visuals.py | 51 ++++++++++++++++++++++++++++++++------------- 5 files changed, 55 insertions(+), 56 deletions(-) diff --git a/web/htdocs/dashboard.py b/web/htdocs/dashboard.py index 0118708..81c1610 100644 --- a/web/htdocs/dashboard.py +++ b/web/htdocs/dashboard.py @@ -1068,55 +1068,27 @@ def add_dashlet(dashlet, dashboard): dashboard['mtime'] = int(time.time()) visuals.save('dashboards', dashboards) -def popup_add_dashlet(): +def popup_add_dashlet(dashboard_name, dashlet_type, context, params): if not config.may("general.edit_dashboards"): - raise MKAuthException(_("You are not allowed to edit dashboards.")) - - dashboard_name = html.var('name') - if not dashboard_name: - raise MKGeneralException(_('The name of the dashboard is missing.')) + # Exceptions do not work here. + return load_dashboards() if dashboard_name not in available_dashboards: - raise MKGeneralException(_('The requested dashboard does not exist.')) - + return dashboard = load_dashboard_with_cloning(dashboard_name) + dashlet = default_dashlet_definition(dashlet_type) + + dashlet["context"] = context + if dashlet_type == 'view': + view_name = params['name'] + else: + dashlet.update(params) - ty = html.var('type') - if not ty: - raise MKGeneralException(_('The type of the dashlet is missing.')) - - dashlet_type = dashlet_types[ty] - - dashlet = default_dashlet_definition(ty) - - # Parse context and params - view_name = None - for what in [ 'context', 'params' ]: - val = html.var(what) - data = {} - if val == None: - raise MKGeneralException(_('Unable to parse the dashlet parameter "%s".') % what) - elif val == '': - dashlet[what] = {} - continue # silently skip empty vars - - for entry in val.split('|'): - key, vartype, val = entry.split(':', 2) - if vartype == 'number': - val = int(val) - data[key] = val - - if what == 'context': - dashlet[what] = data - else: - if ty == 'view': - view_name = data['name'] - dashlet.update(data) # When a view shal be added to the dashboard, load the view and put it into the dashlet - if ty == 'view': + if dashlet_type == 'view': # save the original context and override the context provided by the view context = dashlet['context'] load_view_into_dashlet(dashlet, len(dashboard['dashlets']), view_name) diff --git a/web/htdocs/index.py b/web/htdocs/index.py index f90fbce..eeeb2be 100644 --- a/web/htdocs/index.py +++ b/web/htdocs/index.py @@ -38,7 +38,7 @@ import livestatus import defaults, config, login, userdb, hooks, visuals, default_permissions try: import reporting -except: +except 1: reporting = None from html_mod_python import * diff --git a/web/htdocs/js/checkmk.js b/web/htdocs/js/checkmk.js index 3799845..e09073c 100644 --- a/web/htdocs/js/checkmk.js +++ b/web/htdocs/js/checkmk.js @@ -2276,5 +2276,6 @@ function add_to_visual(visual_type, name) add_visual_data = null; // After adding a dashlet, go to the choosen dashboard - window.location.href = response; + if (response) + window.location.href = response; } diff --git a/web/htdocs/views.py b/web/htdocs/views.py index 94e9280..7e276d6 100644 --- a/web/htdocs/views.py +++ b/web/htdocs/views.py @@ -1896,6 +1896,9 @@ def ajax_export(): view["public"] = True html.write(pprint.pformat(available_views)) +def get_view_by_name(view_name): + load_views() + return available_views[view_name] #. # .--Plugin Helpers------------------------------------------------------. diff --git a/web/htdocs/visuals.py b/web/htdocs/visuals.py index 081eee1..2a2636c 100644 --- a/web/htdocs/visuals.py +++ b/web/htdocs/visuals.py @@ -239,7 +239,10 @@ def available(what, all_visuals): # | Show a list of all visuals with actions to delete/clone/edit | # '----------------------------------------------------------------------' -def page_list(what, title, visuals, custom_columns = [], render_custom_buttons=None): +def page_list(what, title, visuals, custom_columns = [], + render_custom_buttons = None, + render_custom_columns = None): + what_s = what[:-1] if not config.may("general.edit_" + what): raise MKAuthException(_("Sorry, you lack the permission for editing this type of visuals.")) @@ -271,23 +274,23 @@ def page_list(what, title, visuals, custom_columns = [], render_custom_buttons=N custom = [] builtin = [] - for (owner, visualname) in keys_sorted: - if owner == "" and not config.may("%s.%s" % (what_s, visualname)): + for (owner, visual_name) in keys_sorted: + if owner == "" and not config.may("%s.%s" % (what_s, visual_name)): continue # not allowed to see this view - visual = visuals[(owner, visualname)] + visual = visuals[(owner, visual_name)] if owner == config.user_id or \ (visual["public"] and owner != '' and config.user_may(owner, "general.publish_" + what)): - custom.append((owner, visualname, visual)) + custom.append((owner, visual_name, visual)) elif visual["public"] and owner == "": - builtin.append((owner, visualname, visual)) + builtin.append((owner, visual_name, visual)) for title, items in [ (_('Custom'), custom), (_('Builtin'), builtin) ]: html.write('<h3>' + title + '</h3>') table.begin(css = 'data', limit = None) - for owner, visualname, visual in items: + for owner, visual_name, visual in items: table.row(css = 'data') # Actions @@ -295,33 +298,33 @@ def page_list(what, title, visuals, custom_columns = [], render_custom_buttons=N # Edit if owner == config.user_id: - html.icon_button("edit_%s.py?load_name=%s" % (what_s, visualname), _("Edit"), "edit") + html.icon_button("edit_%s.py?load_name=%s" % (what_s, visual_name), _("Edit"), "edit") # Clone / Customize buttontext = _("Create a customized copy of this") backurl = html.urlencode(html.makeuri([])) clone_url = "edit_%s.py?load_user=%s&load_name=%s&back=%s" \ - % (what_s, owner, visualname, backurl) + % (what_s, owner, visual_name, backurl) html.icon_button(clone_url, buttontext, "clone") # Delete if owner == config.user_id: - html.icon_button(html.makeactionuri([('_delete', visualname)]), + html.icon_button(html.makeactionuri([('_delete', visual_name)]), _("Delete!"), "delete") # Custom buttons - visual specific if render_custom_buttons: - render_custom_buttons(visualname, visual) + render_custom_buttons(visual_name, visual) # visual Name - table.cell(_('ID'), visualname) + table.cell(_('ID'), visual_name) # Title table.cell(_('Title')) title = _u(visual['title']) if not visual["hidden"]: html.write("<a href=\"%s.py?%s=%s\">%s</a>" % - (what_s, visual_types[what]['ident_attr'], visualname, html.attrencode(title))) + (what_s, visual_types[what]['ident_attr'], visual_name, html.attrencode(title))) else: html.write(html.attrencode(title)) html.help(html.attrencode(_u(visual['description']))) @@ -339,6 +342,9 @@ def page_list(what, title, visuals, custom_columns = [], render_custom_buttons=N table.cell(_('Public'), visual["public"] and _("yes") or _("no")) table.cell(_('Hidden'), visual["hidden"] and _("yes") or _("no")) + if render_custom_columns: + render_custom_columns(visual_name, visual) + table.end() html.footer() @@ -1185,5 +1191,22 @@ def ajax_add_visual(): module_name = visual_type["module_name"] visual_module = __import__(module_name) handler = eval("visual_module." + visual_type["add_visual_handler"]) - handler() + element_name = html.var("name") + element_type = html.var("type") + # Context and params are | separated lists of : separated triples + # of name, datatype and value. Datatype is int or string + extra_data = [] + for what in [ 'context', 'params' ]: + value = html.var(what) + data = {} + extra_data.append(data) + if value == '': + continue + for entry in value.split('|'): + key, vartype, value = entry.split(':', 2) + if vartype == 'number': + value = int(value) + data[key] = value + + handler(element_name, element_type, *extra_data)
9 years, 8 months
1
0
0
0
← Newer
1
...
21
22
23
24
25
26
27
...
31
Older →
Jump to page:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
Results per page:
10
25
50
100
200