directly in the user interface
Message-ID: <5603d94e.dXikxc1bhsIGq40k%mk(a)mathias-kettner.de>
User-Agent: Heirloom mailx 12.5 6/20/10
MIME-Version: 1.0
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
Module: check_mk
Branch: master
Commit: f866a24a948b3d022d13326c383c6f9cb3a334ce
URL:
http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=f866a24a948b3d…
Author: Mathias Kettner <mk(a)mathias-kettner.de>
Date: Thu Sep 24 13:06:43 2015 +0200
#2601 Access to Werks (change log) directly in the user interface
Your Check_MK installation now has a new GUI page for showing the
complete history of changes (Werks) that are included in the version
that is running. You can set several filters for searching within
this log. You reach the new page by clicking on the Check_MK version
number at the top of the side bar.
---
.werks/2601 | 13 ++++++++++
ChangeLog | 1 +
web/htdocs/check_mk.css | 1 +
web/htdocs/werks.py | 61 ++++++++++++++++++++++++++++++++++-------------
4 files changed, 59 insertions(+), 17 deletions(-)
diff --git a/.werks/2601 b/.werks/2601
new file mode 100644
index 0000000..d1d4b66
--- /dev/null
+++ b/.werks/2601
@@ -0,0 +1,13 @@
+Title: Access to Werks (change log) directly in the user interface
+Level: 2
+Component: multisite
+Compatible: compat
+Version: 1.2.7i3
+Date: 1443092672
+Class: feature
+
+Your Check_MK installation now has a new GUI page for showing the
+complete history of changes (Werks) that are included in the version
+that is running. You can set several filters for searching within
+this log. You reach the new page by clicking on the Check_MK version
+number at the top of the side bar.
diff --git a/ChangeLog b/ChangeLog
index 8b91efe..d5ee62a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -217,6 +217,7 @@
* 2612 SEC: Fixed possible XSS on service detail page using the long service
output...
* 2613 SEC: Additional fix for refleced XSS on index page using start_url...
* 2600 Allow service regular expression filter to be negated...
+ * 2601 Access to Werks (change log) directly in the user interface...
* 2314 FIX: Availability: fixed exception when grouping by host or service group
* 2361 FIX: Fix exception for missing key 'title' in certain cases of older
customized views
* 2379 FIX: Plugin-Output: Fixed handling of URLs within output of check_http...
diff --git a/web/htdocs/check_mk.css b/web/htdocs/check_mk.css
index f736f1d..3531cf0 100644
--- a/web/htdocs/check_mk.css
+++ b/web/htdocs/check_mk.css
@@ -587,6 +587,7 @@ div#hover_menu div.error {
td.werklevel, td.werkclass, td.werkcomp {
text-align: center;
white-space: nowrap;
+ width: 100px;
}
table.data.werks tr:nth-child(odd) td.werklevel2 {
diff --git a/web/htdocs/werks.py b/web/htdocs/werks.py
index 0a4195b..83cab11 100644
--- a/web/htdocs/werks.py
+++ b/web/htdocs/werks.py
@@ -241,14 +241,19 @@ werk_table_option_entries = [
),
( "", "" ),
),
-#"
-#" Gruppierung:
-#" - Version
-#" - Tag
-#" - Woche??
-#" - Nix
-#"
-
+ ( "grouping",
+ "single",
+ DropdownChoice(
+ title = _("Group Werks by"),
+ choices = [
+ ( "version", _("Check_MK Version") ),
+ ( "day", _("Day of creation") ),
+ ( "week", _("Week of creation") ),
+ ( None, _("Do not group") ),
+ ],
+ ),
+ "version",
+ ),
]
@@ -256,22 +261,44 @@ def render_werks_table():
werk_table_options = render_werk_table_options()
- table.begin(title=_("Change log of Check_MK version %s") %
defaults.check_mk_version,
- searchable = False,
- sortable = False,
- css="werks")
+ current_group = False
+
+ def begin_group(title):
+ table.begin(title=title, limit=None, searchable = False, sortable = False,
css="werks")
+
for werk in werks_sorted_by_date():
if werk_matches_options(werk, werk_table_options):
+ group = werk_group_value(werk, werk_table_options["grouping"])
+ if group != current_group:
+ if current_group != False:
+ table.end()
+ begin_group(group)
+ current_group = group
+
table.row()
- table.cell(_("ID"), render_werk_id(werk, with_link=True),
css="number")
- table.cell(_("Version"), werk["version"],
css="number")
- table.cell(_("Date"), render_werk_date(werk),
css="number")
+ table.cell(_("ID"), render_werk_id(werk, with_link=True),
css="number narrow")
+ table.cell(_("Version"), werk["version"],
css="number narrow")
+ table.cell(_("Date"), render_werk_date(werk), css="number
narrow")
table.cell(_("Class"), render_werk_class(werk), css="werkclass
werkclass%s" % werk["class"])
table.cell(_("Level"), render_werk_level(werk), css="werklevel
werklevel%d" % werk["level"])
table.cell(_("Compatibility"), render_werk_compatibility(werk),
css="werkcomp werkcomp%s" % werk["compatible"])
table.cell(_("Component"), render_werk_component(werk),
css="nowrap")
table.cell(_("Title"), render_werk_title(werk))
- table.end()
+
+ if current_group != False:
+ table.end()
+
+def werk_group_value(werk, grouping):
+ if grouping == None:
+ return None
+ elif grouping == "version":
+ return werk["version"]
+ else:
+ broken_time = time.localtime(werk["date"])
+ if grouping == "day":
+ return time.strftime("%Y-%m-%d", broken_time)
+ else:
+ return time.strftime("%s %%U - %%Y" % _("Week"),
broken_time)
def werk_matches_options(werk, werk_table_options):
# html.debug((werk["date"], werk_table_options["date_range"]))
@@ -425,7 +452,7 @@ def insert_manpage_links(text):
part = '<a
href="wato.py?mode=check_manpage&check_type=%s">%s</a>' % (
part, part)
new_parts.append(part)
- return ", ".join(new_parts)
+ return " ".join(new_parts)
def werks_sorted_by_date():