Module: check_mk
Branch: master
Commit: 3bbc5f9c9ffe10afdee4c48925cbd4608c3124f1
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=3bbc5f9c9ffe10…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Thu Feb 8 17:32:10 2018 +0100
5725 FIX Fixed changing view filter default values not being effective right after
editing
When editing the default values of filters in views (or dashboards) and saving the view,
the default filter variables were not effective in all cases in the view rendered after
edit. When closing and opening the view again the filter options were set as configured.
Change-Id: I809e39931360207a61d2961383273e5a978332a8
---
.werks/5725 | 12 ++++++++++++
web/htdocs/html_mod_python.py | 2 ++
web/htdocs/htmllib.py | 7 +++++++
web/htdocs/views.py | 15 +++++++++------
4 files changed, 30 insertions(+), 6 deletions(-)
diff --git a/.werks/5725 b/.werks/5725
new file mode 100644
index 0000000..87424e9
--- /dev/null
+++ b/.werks/5725
@@ -0,0 +1,12 @@
+Title: Fixed changing view filter default values not being effective right after editing
+Level: 1
+Component: multisite
+Compatible: compat
+Edition: cre
+Version: 1.4.0p25
+Date: 1518119511
+Class: fix
+
+When editing the default values of filters in views (or dashboards) and saving the view,
+the default filter variables were not effective in all cases in the view rendered after
+edit. When closing and opening the view again the filter options were set as configured.
diff --git a/web/htdocs/html_mod_python.py b/web/htdocs/html_mod_python.py
index 16d16f4..5baae11 100644
--- a/web/htdocs/html_mod_python.py
+++ b/web/htdocs/html_mod_python.py
@@ -64,6 +64,8 @@ class html_mod_python(htmllib.html):
self.read_get_vars()
self.read_cookies()
+ self._requested_url = self.makeuri_contextless(self.vars.items())
+
# Disable caching for all our pages as they are mostly dynamically generated,
# user related and are required to be up-to-date on every refresh
self.set_http_header("Cache-Control", "no-cache")
diff --git a/web/htdocs/htmllib.py b/web/htdocs/htmllib.py
index db11e1a..30f74da 100644
--- a/web/htdocs/htmllib.py
+++ b/web/htdocs/htmllib.py
@@ -1415,6 +1415,7 @@ class html(HTMLGenerator, RequestHandler):
self.browser_redirect = ''
self.link_target = None
self.keybindings_enabled = True
+ self._requested_url = None
self.myfile = None
# Browser options
@@ -1758,6 +1759,12 @@ class html(HTMLGenerator, RequestHandler):
# URL building
#
+ def requested_url(self):
+ """Returns the URL requested by the user.
+ This is not the bare original URL used by the user. Some HTTP variables may
+ have been filtered by Check_MK while parsing the incoming
request."""
+ return self._requested_url
+
# [('varname1', value1), ('varname2', value2) ]
def makeuri(self, addvars, remove_prefix=None, filename=None, delvars=None):
new_vars = [ nv[0] for nv in addvars ]
diff --git a/web/htdocs/views.py b/web/htdocs/views.py
index 34a5e81..27fe04c 100644
--- a/web/htdocs/views.py
+++ b/web/htdocs/views.py
@@ -2169,12 +2169,15 @@ def show_context_links(thisview, datasource, show_filters,
# Customize/Edit view button
if display_options.enabled(display_options.E) and
config.user.may("general.edit_views"):
- backurl = html.urlencode(html.makeuri([]))
- if thisview["owner"] == config.user.id:
- url = "edit_view.py?load_name=%s&back=%s" %
(thisview["name"], backurl)
- else:
- url = "edit_view.py?load_user=%s&load_name=%s&back=%s" % \
- (thisview["owner"], thisview["name"], backurl)
+ url_vars = [
+ ("back", html.requested_url()),
+ ("load_name", thisview["name"]),
+ ]
+
+ if thisview["owner"] != config.user.id:
+ url_vars.append(("load_user", thisview["owner"]))
+
+ url = html.makeuri_contextless(url_vars, filename="edit_view.py")
html.context_button(_("Edit View"), url, "edit",
id="edit", bestof=config.context_buttons_to_show)
if display_options.enabled(display_options.E):