Module: check_mk
Branch: master
Commit: ad09188c671126765b7741200dddef20188539ea
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=ad09188c671126…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Mon May 21 14:18:20 2012 +0200
Better handling of invalid parameters
---
web/htdocs/valuespec.py | 4 ++--
web/htdocs/wato.py | 20 ++++++++++++++++++--
2 files changed, 20 insertions(+), 4 deletions(-)
diff --git a/web/htdocs/valuespec.py b/web/htdocs/valuespec.py
index 45ee2e2..28e9325 100644
--- a/web/htdocs/valuespec.py
+++ b/web/htdocs/valuespec.py
@@ -584,7 +584,7 @@ class ListOf(ValueSpec):
html.write('</td><td class=vlof_content>')
self._valuespec.render_input(
varprefix + "_" + self._magic,
- self._valuespec.canonical_value())
+ self._valuespec.default_value())
html.write('</td></tr></table>')
# Actual table of currently existing entries
@@ -1578,7 +1578,7 @@ class Tuple(ValueSpec):
def validate_datatype(self, value, varprefix):
if type(value) != tuple:
raise MKUserError(varprefix,
- _("The datatype must be a tuple, but is %s") % type(value))
+ _("The datatype must be a tuple, but is %r") % type(value))
if len(value) != len(self._elements):
raise MKUserError(varprefix,
_("The number of elements in the tuple must be exactly %d.") %
len(self._elements))
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 87016d1..713f4f4 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -9431,7 +9431,18 @@ def mode_edit_ruleset(phase):
img = 'nmatch'
html.write('<img align=absmiddle title="%s" class=icon
src="images/icon_rule%s.png"> ' % (title, img))
if rulespec["valuespec"]:
- value_html = rulespec["valuespec"].value_to_text(value)
+ try:
+ value_html = rulespec["valuespec"].value_to_text(value)
+ except:
+ try:
+ reason = ""
+ rulespec["valuespec"].validate_datatype(None, value)
+ except Exception, e:
+ reason = str(e)
+
+ value_html = '<img src="images/icon_alert.png"
class=icon>' \
+ + _("The value of this rule is not valid. ") \
+ + reason
else:
img = value and "yes" or "no"
title = value and _("This rule results in a positive outcome.")
\
@@ -9809,7 +9820,12 @@ def mode_edit_rule(phase):
if valuespec:
value = rule[0]
forms.section()
- valuespec.render_input("ve", value)
+ try:
+ valuespec.validate_datatype("ve", value)
+ valuespec.render_input("ve", value)
+ except:
+ valuespec.render_input("ve", valuespec.default_value())
+
valuespec.set_focus("ve")
else:
forms.section("")