Module: check_mk
Branch: master
Commit: 56517f978cb4012ef0072cf9f63d887a216130c2
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=56517f978cb401…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Wed Aug 14 09:14:43 2013 +0200
Improved foldertree folder filtering
---
ChangeLog | 3 +++
web/plugins/sidebar/wato.py | 22 +++++++++++++++++++++-
2 files changed, 24 insertions(+), 1 deletion(-)
diff --git a/ChangeLog b/ChangeLog
index 5561dee..c6c361c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -109,6 +109,9 @@
* Added new painters for displaying host tags (list of tags, single tag
groups). All those painters are sortable. Also added new filters for tags.
* Added painters, icon and filters for visualizing staleness information
+ * Improved filtering of the foldertree snapin by user permissions (when a user is
+ only permitted on one child folder, the upper folder is removed from the
+ hierarchy)
* FIX: better error message in case of exception in SNMP handling
* FIX: Inventory screen: Now shows custom checks
* FIX: Fixed locking problem of multisite pages related to user loading/saving
diff --git a/web/plugins/sidebar/wato.py b/web/plugins/sidebar/wato.py
index 8a9d23f..3cd3f66 100644
--- a/web/plugins/sidebar/wato.py
+++ b/web/plugins/sidebar/wato.py
@@ -156,6 +156,7 @@ def render_wato_foldertree():
'.folders': {},
}
+
# After the query we have a list of lists where each
# row is a folder with the number of hosts on this level.
#
@@ -190,6 +191,25 @@ def render_wato_foldertree():
del user_folders[folder_path]
#
+ # Now reduce the tree by e.g. removing top-level parts which the user is not
+ # permitted to see directly. Example:
+ # Locations
+ # -> Hamburg: Permitted to see all hosts
+ # -> Munich: Permitted to see no host
+ # In this case, where only a single child with hosts is available, remove the
+ # top level
+ def reduce_tree(folders):
+ for folder_path, folder in folders.items():
+ if len(folder['.folders']) == 1:
+ child_path, child_folder = folder['.folders'].items()[0]
+ folders[child_path] = child_folder
+ del folders[folder_path]
+
+ reduce_tree(folders)
+
+ reduce_tree(user_folders)
+
+ #
# Render link target selection
#
selected_topic, selected_target = config.load_user_file("foldertree",
(_('Hosts'), 'allhosts'))
@@ -224,7 +244,7 @@ def render_wato_foldertree():
# Now render the whole tree
if user_folders:
- render_tree_folder(user_folders[''])
+ render_tree_folder(user_folders.values()[0])
def render_tree_folder(f):
subfolders = f.get(".folders", {})