Module: check_mk
Branch: master
Commit: e03d8fc39eda827b871aecbbd497afa7a6ab9874
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=e03d8fc39eda82…
Author: Lars Michelsen <lm(a)mathias-kettner.de>
Date: Fri Jun 30 08:39:39 2017 +0200
4924 Rulesets: Cloning rules opens the edit dialog
When cloning rules in a WATO ruleset you nearly always want to edit
the ruleset after cloning.
Previously you had to clone the rule, find the cloned rule in the list
again and open it for editing. This workflow has now been simplified:
Like in other places of WATO you now click on clone which opens up the
editor with the values of the origin rule. Once you save the editor
the rule will be saved with the just edited values.
Change-Id: I114cab0c81ee987f2715940469179ffa960efd35
---
.werks/4924 | 18 +++++++++++++++++
web/htdocs/wato.py | 56 +++++++++++++++++++++++++++++++++++++++++----------
web/htdocs/watolib.py | 10 ++++-----
3 files changed, 68 insertions(+), 16 deletions(-)
diff --git a/.werks/4924 b/.werks/4924
new file mode 100644
index 0000000..8262000
--- /dev/null
+++ b/.werks/4924
@@ -0,0 +1,18 @@
+Title: Rulesets: Cloning rules opens the edit dialog
+Level: 1
+Component: wato
+Compatible: compat
+Edition: cre
+Version: 1.5.0i1
+Date: 1498804589
+Class: feature
+
+When cloning rules in a WATO ruleset you nearly always want to edit
+the ruleset after cloning.
+
+Previously you had to clone the rule, find the cloned rule in the list
+again and open it for editing. This workflow has now been simplified:
+
+Like in other places of WATO you now click on clone which opens up the
+editor with the values of the origin rule. Once you save the editor
+the rule will be saved with the just edited values.
diff --git a/web/htdocs/wato.py b/web/htdocs/wato.py
index 3bd031e..d2c6df8 100644
--- a/web/htdocs/wato.py
+++ b/web/htdocs/wato.py
@@ -12610,13 +12610,6 @@ class ModeEditRuleset(WatoMode):
else:
return None # browser reload
- elif action == "insert": # Clone a rule
- if not html.check_transaction():
- return None # browser reload
- ruleset.clone_rule(rule)
- rulesets.save()
- return
-
else:
if not html.check_transaction():
return None # browser reload
@@ -12784,8 +12777,18 @@ class ModeEditRuleset(WatoMode):
("rule_folder", folder.path()),
])
html.icon_button(edit_url, _("Edit this rule"), "edit")
- self._rule_button("insert", _("Insert a copy of this rule in current folder"),
- folder, rulenr)
+
+ clone_url = folder_preserving_link([
+ ("mode", "clone_rule"),
+ ("ruleset_back_mode", self._back_mode),
+ ("varname", self._name),
+ ("rulenr", rulenr),
+ ("host", self._hostname),
+ ("item", mk_repr(self._item)),
+ ("rule_folder", folder.path()),
+ ])
+ html.icon_button(clone_url, _("Create a copy of this rule"), "clone")
+
html.element_dragger("tr", base_url=self._action_url("move_to", folder, rulenr))
self._rule_button("delete", _("Delete this rule"), folder, rulenr)
@@ -13337,8 +13340,7 @@ class ModeEditRule(WatoMode):
else:
# Move rule to new folder during editing
- self._ruleset.delete_rule(self._rule)
- self._rulesets.save()
+ self._remove_from_orig_folder()
# Set new folder
self._rule.folder = new_rule_folder
@@ -13383,6 +13385,11 @@ class ModeEditRule(WatoMode):
self._rulesets.save()
+ def _remove_from_orig_folder(self):
+ self._ruleset.delete_rule(self._rule)
+ self._rulesets.save()
+
+
def _success_message(self):
return _("Edited rule in ruleset \"%s\" in folder \"%s\"") % \
(self._ruleset.title(), self._folder.alias_path())
@@ -13596,6 +13603,32 @@ class ModeEditRule(WatoMode):
+class ModeCloneRule(ModeEditRule):
+ def __init__(self):
+ super(ModeCloneRule, self).__init__()
+
+
+ def _set_rule(self):
+ super(ModeCloneRule, self)._set_rule()
+
+ self._orig_rule = self._rule
+ self._rule = self._orig_rule.clone()
+
+
+ def _save_rule(self):
+ if self._rule.folder == self._orig_rule.folder:
+ self._ruleset.insert_rule_after(self._rule, self._orig_rule)
+ else:
+ self._ruleset.append_rule(self._rule.folder(), self._rule)
+
+ self._rulesets.save()
+
+
+ def _remove_from_orig_folder(self):
+ pass # Cloned rule is not yet in folder, don't try to remove
+
+
+
class ModeNewRule(ModeEditRule):
_new = True
@@ -16982,6 +17015,7 @@ modes = {
"edit_ruleset" : ([], ModeEditRuleset),
"new_rule" : ([], ModeNewRule),
"edit_rule" : ([], ModeEditRule),
+ "clone_rule" : ([], ModeCloneRule),
"host_groups" : (["groups"], ModeHostgroups),
"service_groups" : (["groups"], ModeServicegroups),
diff --git a/web/htdocs/watolib.py b/web/htdocs/watolib.py
index fbf56ea..c977998 100644
--- a/web/htdocs/watolib.py
+++ b/web/htdocs/watolib.py
@@ -7470,11 +7470,11 @@ class Ruleset(object):
self._on_change()
- def clone_rule(self, rule):
- index = self._rules[rule.folder.path()].index(rule)
- self._rules[rule.folder.path()].insert(index, rule.clone())
- add_change("edit-ruleset",
- _("Inserted new rule in ruleset '%s'") % self.title(),
+ def insert_rule_after(self, rule, after):
+ index = self._rules[rule.folder.path()].index(after) + 1
+ self._rules[rule.folder.path()].insert(index, rule)
+ add_change("clone-ruleset",
+ _("Cloned rule in ruleset '%s'") % self.title(),
sites=rule.folder.all_site_ids())
self._on_change()
Module: check_mk
Branch: master
Commit: 87b9212d0166bd08d26938fdc3e447f41228389f
URL: http://git.mathias-kettner.de/git/?p=check_mk.git;a=commit;h=87b9212d0166bd…
Author: Sven Panne <sp(a)mathias-kettner.de>
Date: Thu Jun 29 15:21:16 2017 +0200
Improved werk text
Change-Id: Iab5a061c2937fa73c7de3b23f0bd14bd13f1dc5c
---
.werks/4940 | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/.werks/4940 b/.werks/4940
index 19655a0..a8f44e9 100644
--- a/.werks/4940
+++ b/.werks/4940
@@ -1,4 +1,4 @@
-Title: Handle non-ASCII characters in event console messages
+Title: Handle non-ASCII characters in event console messages submitted via Livestatus
Level: 1
Component: ec
Compatible: compat
@@ -8,4 +8,5 @@ Date: 1498736427
Class: fix
Messages containing non-ASCII characters were silently dropped in the event
-console. This has been fixed.
+console when they were sent via Livestatus, e.g. when using the Event Console
+GUI's "Generate Event!" button. This has been fixed.