def rename_host_in_folder_rules(folder): rulesets = watolib.FolderRulesets(folder) rulesets.load() changed_folder_rulesets = [] for varname, ruleset in rulesets.get_rulesets().items(): for _rule_folder, _rulenr, rule in ruleset.get_rules(): orig_rule = rule.clone(preserve_id=True) if rule.replace_explicit_host_condition(oldname, newname): changed_folder_rulesets.append(varname) log_audit( "edit-rule", _('Renamed host condition from "%s" to "%s"') % (oldname, newname), diff_text=make_diff_text(orig_rule.to_log(), rule.to_log()), object_ref=rule.object_ref(), ) if changed_folder_rulesets: add_change( "edit-ruleset", _("Renamed host in %d rulesets of folder %s") % (len(changed_folder_rulesets), folder.title()), object_ref=folder.object_ref(), sites=folder.all_site_ids(), ) rulesets.save() changed_rulesets.extend(changed_folder_rulesets) for subfolder in folder.subfolders(): rename_host_in_folder_rules(subfolder)
def test_log_audit_with_object_diff(request_context): old = { "a": "b", "b": "c", } new = { "b": "c", } with on_time("2018-04-15 16:50", "CET"): log_audit( object_ref=None, action="bla", message="Message", user_id=UserId("calvin"), diff_text=make_diff_text(old, new), ) store = AuditLogStore(AuditLogStore.make_path()) assert store.read() == [ AuditLogStore.Entry( time=1523811000, object_ref=None, user_id="calvin", action="bla", text="Message", diff_text='Attribute "a" with value "b" removed.', ), ]
def edit_users(changed_users): all_users = userdb.load_users(lock=True) new_users_info = [] modified_users_info = [] for user_id, settings in changed_users.items(): user_attrs = settings.get("attributes") is_new_user = settings.get("is_new_user", True) _validate_user_attributes(all_users, user_id, user_attrs, is_new_user=is_new_user) if is_new_user: new_users_info.append(user_id) else: modified_users_info.append(user_id) if is_new_user: add_internal_attributes(user_attrs) old_object = make_user_audit_log_object(all_users.get(user_id, {})) log_audit(action="edit-user", message=(_("Created new user: %s") % user_id if is_new_user else _("Modified user: %s") % user_id), diff_text=make_diff_text(old_object, make_user_audit_log_object(user_attrs)), object_ref=make_user_object_ref(user_id)) all_users[user_id] = user_attrs if new_users_info: add_change("edit-users", _("Created new users: %s") % ", ".join(new_users_info)) if modified_users_info: add_change("edit-users", _("Modified users: %s") % ", ".join(modified_users_info)) userdb.save_users(all_users)
def clone_rule(self, orig_rule, rule): if rule.folder == orig_rule.folder: self.insert_rule_after(rule, orig_rule) else: self.append_rule(rule.folder, rule) add_change("new-rule", _("Cloned rule from rule %s in ruleset \"%s\" in folder \"%s\"") % (orig_rule.id, self.title(), rule.folder.alias_path()), sites=rule.folder.all_site_ids(), diff_text=make_diff_text({}, rule.to_web_api()), object_ref=rule.object_ref())
def edit_rule(self, orig_rule, rule): folder_rules = self._rules[orig_rule.folder.path()] index = folder_rules.index(orig_rule) folder_rules[index] = rule add_change("edit-rule", _("Changed properties of rule #%d in ruleset \"%s\" in folder \"%s\"") % (index, self.title(), rule.folder.alias_path()), sites=rule.folder.all_site_ids(), diff_text=make_diff_text(orig_rule.to_web_api(), rule.to_web_api()), object_ref=rule.object_ref()) self._on_change()
def clone_rule(self, orig_rule: Rule, rule: Rule) -> None: if rule.folder == orig_rule.folder: self.insert_rule_after(rule, orig_rule) else: self.append_rule(rule.folder, rule) add_change( "new-rule", _('Cloned rule from rule %s in ruleset "%s" in folder "%s"') % (orig_rule.id, self.title(), rule.folder.alias_path()), sites=rule.folder.all_site_ids(), diff_text=make_diff_text({}, rule.to_log()), object_ref=rule.object_ref(), )
def edit_rule(self, orig_rule: Rule, rule: Rule) -> None: folder_rules = self._rules[orig_rule.folder.path()] index = folder_rules.index(orig_rule) folder_rules[index] = rule add_change( "edit-rule", _('Changed properties of rule #%d in ruleset "%s" in folder "%s"') % (index, self.title(), rule.folder.alias_path()), sites=rule.folder.all_site_ids(), diff_text=make_diff_text(orig_rule.to_log(), rule.to_log()), object_ref=rule.object_ref(), ) self._on_change()