Module: check_mk
Branch: master
Commit: 5b01f3644be67d6257ba1012dbac729e714a9ae3
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=5b01f3644be67d…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Mon Oct 22 08:02:38 2018 +0200
6845 Add permission "Use CSV export" to control access to this feature
Change-Id: I3ddd09dd0dd0961586f37aba827a2e15d866711c
---
.werks/6845 | 10 ++++++++++
cmk/gui/default_permissions.py | 5 +++++
cmk/gui/htmllib.py | 2 +-
cmk/gui/plugins/views/availability.py | 8 ++++----
4 files changed, 20 insertions(+), 5 deletions(-)
diff --git a/.werks/6845 b/.werks/6845
new file mode 100644
index 0000000..a7e802d
--- /dev/null
+++ b/.werks/6845
@@ -0,0 +1,10 @@
+Title: Add permission "Use CSV export" to control access to this feature
+Level: 1
+Component: multisite
+Compatible: compat
+Edition: cre
+Version: 1.6.0i1
+Date: 1540068749
+Class: feature
+
+
diff --git a/cmk/gui/default_permissions.py b/cmk/gui/default_permissions.py
index 299ce53..0c0a5a5 100644
--- a/cmk/gui/default_permissions.py
+++ b/cmk/gui/default_permissions.py
@@ -107,6 +107,11 @@ def load_plugins(force):
_("See the availability views of hosts and services"),
[ "admin", "user", "guest" ])
+ config.declare_permission("general.csv_export",
+ _("Use CSV export"),
+ _("Export data of views using the CSV export"),
+ [ "admin", "user", "guest" ])
+
config.declare_permission('general.edit_notifications',
_('Edit personal notification settings'),
_('This allows a user to edit his personal notification settings. You also
need the permission '
diff --git a/cmk/gui/htmllib.py b/cmk/gui/htmllib.py
index ddc9f59..ea1781b 100644
--- a/cmk/gui/htmllib.py
+++ b/cmk/gui/htmllib.py
@@ -3003,7 +3003,7 @@ hy
"pageurl", target="_top",
cssclass="inline")
# TODO: Move this away from here. Make a context button. The view should handle
this
- if self.myfile == "view" and self.var('mode') !=
'availability':
+ if self.myfile == "view" and self.var('mode') !=
'availability' and config.user.may("general.csv_export"):
self.icon_button(self.makeuri([("output_format",
"csv_export")]),
_("Export as CSV"),
"download_csv", target="_top",
cssclass="inline")
diff --git a/cmk/gui/plugins/views/availability.py
b/cmk/gui/plugins/views/availability.py
index 82a9dcb..034817f 100644
--- a/cmk/gui/plugins/views/availability.py
+++ b/cmk/gui/plugins/views/availability.py
@@ -206,7 +206,7 @@ def render_availability_page(view, datasource, context, filterheaders,
only_site
av_data = availability.compute_availability(what, av_rawdata, avoptions)
# Do CSV ouput
- if html.output_format == "csv_export":
+ if html.output_format == "csv_export" and
config.user.may("general.csv_export"):
output_availability_csv(what, av_data, avoptions)
return
@@ -232,7 +232,7 @@ def render_availability_page(view, datasource, context, filterheaders,
only_site
if config.reporting_available() and
config.user.may("general.reporting"):
html.context_button(_("Export as PDF"), html.makeuri([],
filename="report_instant.py"), "report")
- if av_mode == "table":
+ if av_mode == "table" and
config.user.may("general.csv_export"):
html.context_button(_("Export as CSV"),
html.makeuri([("output_format", "csv_export")]),
"download_csv")
if av_mode == "timeline" or av_object:
@@ -526,7 +526,7 @@ def render_bi_availability(title, aggr_rows):
html.context_button(_("Status View"), html.makeuri([("mode",
"status")]), "status")
if config.reporting_available() and
config.user.may("general.reporting"):
html.context_button(_("Export as PDF"), html.makeuri([],
filename="report_instant.py"), "report")
- if av_mode == "availability":
+ if av_mode == "availability" and
config.user.may("general.csv_export"):
html.context_button(_("Export as CSV"),
html.makeuri([("output_format", "csv_export")]),
"download_csv")
if av_mode == "timeline":
@@ -654,7 +654,7 @@ def render_bi_availability(title, aggr_rows):
html.makeuri([("_unset_logrow_limit",
"1")]))
html.show_warning(text)
- if html.output_format == "csv_export":
+ if html.output_format == "csv_export" and
config.user.may("general.csv_export"):
output_availability_csv("bi", av_data, avoptions)
return