Module: check_mk
Branch: master
Commit: 8ad1bebf9a5db650beb4a3e5645c7f1d71987f60
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=8ad1bebf9a5db6…
Author: Andreas Boesl <ab(a)mathias-kettner.de>
Date: Fri Feb 24 10:59:48 2012 +0100
WATO: disabled validation for invisible attributes
---
web/htdocs/js/wato.js | 18 ++++++++++++++++++
web/htdocs/wato.py | 24 ++++++++++++++++++------
2 files changed, 36 insertions(+), 6 deletions(-)
diff --git a/web/htdocs/js/wato.js b/web/htdocs/js/wato.js
index 677891c..86c7f8f 100644
--- a/web/htdocs/js/wato.js
+++ b/web/htdocs/js/wato.js
@@ -127,6 +127,24 @@ function wato_fix_visibility() {
var oTr = document.getElementById("attr_" + attrname);
oTr.style.display = display;
+ // Prepare current visibility information which is used
+ // within the attribut validation in wato
+ // Hidden attributes are not validated at all
+ if ( !document.getElementById("attr_display_" + attrname) ){
+ var newInput = document.createElement("input");
+ newInput.name = "attr_display_" + attrname;
+ newInput.id = "attr_display_" + attrname;
+ newInput.type = "hidden";
+ newInput.className = "text";
+ oTr.appendChild(newInput);
+ }
+ var display_info = document.getElementById("attr_display_" + attrname)
+ if ( display == "none" ) {
+ display_info.value = "0";
+ }else{
+ display_info.value = "1";
+ }
+
// There is at least one item in this topic -> show it
var topic = oTr.parentNode.parentNode.parentNode.id.substr(21);
if( display == "" ){
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index b629d8b..3604188 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -3553,6 +3553,15 @@ class Attribute:
def from_html_vars(self):
return None
+
+ # Check whether this attribute needs to be validated at all
+ # Attributes might be permanently hidden (show_in_form = False)
+ # or dynamically hidden by the depends_on_tags feature
+ def needs_validation(self):
+ if not self._show_in_form:
+ return False
+ return html.var('attr_display_%s' % self._name, "1") ==
"1"
+
# Check if the value entered by the user is valid.
# This method may raise MKUserError in case of invalid user input.
def validate_input(self):
@@ -3916,8 +3925,9 @@ def collect_attributes(do_validate = True):
if not html.var("_change_%s" % attrname, False):
continue
- if do_validate:
+ if do_validate and attr.needs_validation():
attr.validate_input()
+
host[attrname] = attr.from_html_vars()
return host
@@ -3982,8 +3992,9 @@ def configure_attributes(hosts, for_what, parent, myself=None,
without_attribute
continue # e.g. needed to skip ipaddress in CSV-Import
# Skip hidden attributes
+ hide_attribute = False
if not attr.show_in_form():
- continue
+ hide_attribute = True
# In folder not all attributes are shown
if for_what == "folder" and not attr.show_in_folder():
@@ -3996,9 +4007,10 @@ def configure_attributes(hosts, for_what, parent, myself=None,
without_attribute
if depends_on_tags:
dependency_mapping[attrname] = depends_on_tags
else:
- # One attribute is always shown -> topic can never
- # be made invisible
- topic_is_volatile = False
+ if attr.show_in_form():
+ # One attribute is always shown -> topic can never
+ # be made invisible
+ topic_is_volatile = False
else:
topic_is_volatile = False
@@ -4051,7 +4063,7 @@ def configure_attributes(hosts, for_what, parent, myself=None,
without_attribute
inherited_tags["attr_%s" % attrname] =
'|'.join(attr.get_tag_list(inherited_value))
# Legend and Help
- html.write('<tr id="attr_%s"><td class=legend>'
% attrname)
+ html.write('<tr id="attr_%s" %s><td
class=legend>' % (attrname, hide_attribute and 'style="display:
none"' or ""))
if attr.help():
html.begin_foldable_container("attribute_help", attrname, True,
"<b>%s</b>" % attr.title(), indent=False)
html.write("<i>%s</i>" % attr.help())