def _page_menu_entries_related(self) -> Iterable[PageMenuEntry]: yield PageMenuEntry( title=_("Hosts"), icon_name="folder", item=make_simple_link( makeuri_contextless( request, [("mode", "folder")], filename="wato.py", )), )
def _page_menu_entries_related(self) -> Iterator[PageMenuEntry]: yield PageMenuEntry( title=_("Tags"), icon_name="tag", item=make_simple_link(watolib.folder_preserving_link([("mode", "tags")])), ) yield PageMenuEntry( title=_("Custom host attributes"), icon_name="custom_attr", item=make_simple_link(watolib.folder_preserving_link([("mode", "host_attrs")])), ) if config.user.may("wato.dcd_connections"): yield PageMenuEntry( title=_("Dynamic host management"), icon_name="dcd_connections", item=make_simple_link(watolib.folder_preserving_link([("mode", "dcd_connections") ])), )
def _page_menu_entries_details(self) -> Iterator[PageMenuEntry]: yield PageMenuEntry( title=_("Show all settings") if self._show_only_modified else _("Show only modified settings"), icon_name="checkbox", item=make_simple_link( html.makeactionuri([ ("_show_only_modified", "0" if self._show_only_modified else "1"), ])), )
def _page_menu_entries_related() -> Iterator[PageMenuEntry]: yield PageMenuEntry( title=_("Change password"), icon_name="topic_change_password", item=make_simple_link("user_change_pw.py"), ) yield PageMenuEntry( title=_("Edit profile"), icon_name="topic_profile", item=make_simple_link("user_profile.py"), ) if rulebased_notifications_enabled() and user.may( "general.edit_notifications"): yield PageMenuEntry( title=_("Notification rules"), icon_name="topic_events", item=make_simple_link("wato.py?mode=user_notifications_p"), )
def _page_menu_entries_details(self) -> Iterator[PageMenuEntry]: yield PageMenuEntry( title=_("Show all settings"), icon_name="checked_checkbox" if self._show_only_modified else "checkbox", item=make_simple_link( makeactionuri(request, transactions, [ ("_show_only_modified", "0" if self._show_only_modified else "1"), ])), )
def _page_menu_entries_related(self) -> Iterator[PageMenuEntry]: back_url = self._back_url() # Small hack to not have a "up" and "back" link both pointing to the parent mode if back_url and "mode=background_jobs_overview" not in back_url: yield PageMenuEntry( title=_("Back"), icon_name="back", item=make_simple_link(back_url), is_shortcut=True, is_suggested=True, )
def _page_menu_entries_all_sites(self) -> Iterator[PageMenuEntry]: if not self._may_activate_changes(): return yield PageMenuEntry( title=_("Discard all pending changes"), icon_name="delete", item=make_simple_link(html.makeactionuri([("_action", "discard")])), name="discard_changes", is_enabled=self.has_changes() and self._get_last_wato_snapshot_file(), )
def _page_menu_entries_hosts_in_folder(self) -> Iterator[PageMenuEntry]: if not self._folder.locked_hosts() and config.user.may( "wato.manage_hosts") and self._folder.may("write"): yield PageMenuEntry( title=_("Add host"), icon_name="new", item=make_simple_link(self._folder.url([("mode", "newhost")])), is_shortcut=True, is_suggested=True, ) yield PageMenuEntry( title=_("Add cluster"), icon_name="new_cluster", item=make_simple_link( self._folder.url([("mode", "newcluster")])), ) yield PageMenuEntry( title=_("Import hosts via CSV file"), icon_name="bulk_import", item=make_simple_link( self._folder.url([("mode", "bulk_import")])), ) if config.user.may("wato.services"): yield PageMenuEntry( title=_("Discover services"), icon_name="services", item=make_simple_link( self._folder.url([("mode", "bulkinventory"), ("all", "1")])), ) if config.user.may("wato.rename_hosts"): yield PageMenuEntry( title=_("Rename multiple hosts"), icon_name="rename_host", item=make_simple_link( self._folder.url([("mode", "bulk_rename_host")])), ) if not self._folder.locked_hosts() and config.user.may( "wato.parentscan") and self._folder.may("write"): yield PageMenuEntry( title=_("Detect network parent hosts"), icon_name="parentscan", item=make_simple_link( self._folder.url([("mode", "parentscan"), ("all", "1")])), ) if config.user.may("wato.random_hosts"): yield PageMenuEntry( title=_("Add random hosts"), icon_name="random", item=make_simple_link( self._folder.url([("mode", "random_hosts")])), )
def page_menu_all_hosts_entries(should_use_dns_cache: bool) -> Iterator[PageMenuEntry]: if should_use_dns_cache: yield PageMenuEntry( title=_("Update DNS cache"), icon_name="update", item=make_simple_link( makeactionuri(request, transactions, [("_update_dns_cache", "1")]) ), shortcut_title=_("Update site DNS cache"), is_shortcut=True, is_suggested=True, )
def _page_menu_entries_synchronized_users(self) -> Iterator[PageMenuEntry]: if userdb.sync_possible(): if not self._job_snapshot.is_active(): yield PageMenuEntry( title=_("Start user synchronization"), icon_name="replicate", item=make_simple_link(html.makeactionuri([("_sync", 1)])), ) yield PageMenuEntry( title=_("Last synchronization result"), icon_name="background_job_details", item=make_simple_link(self._job.detail_url()), ) yield PageMenuEntry( title=_("LDAP & Active Directory"), icon_name="ldap", item=make_simple_link( watolib.folder_preserving_link([("mode", "ldap_config")])), )
def _page_menu_entries_ack_all_werks() -> Iterator[PageMenuEntry]: if not may_acknowledge(): return yield PageMenuEntry( title=_("Acknowledge all"), icon_name="werk_ack", is_shortcut=True, is_suggested=True, item=make_simple_link(html.makeactionuri([("_ack_all", "1")])), is_enabled=bool(unacknowledged_incompatible_werks()), )
def _page_menu_entries_related(self) -> Iterable[PageMenuEntry]: if not self._host: return yield PageMenuEntry( title=_("Host log files"), icon_name="logwatch", item=make_simple_link( html.makeuri_contextless([("host", self._hostname)], filename="logwatch.py")), ) if self._item: yield PageMenuEntry( title=("Show log file"), icon_name="logwatch", item=make_simple_link( html.makeuri_contextless([("host", self._hostname), ("file", self._item)], filename="logwatch.py")), )
def _page_menu_entries_this_folder(self) -> Iterator[PageMenuEntry]: if self._folder.may("read"): yield PageMenuEntry( title=_("Properties"), icon_name="edit", item=make_simple_link(self._folder.edit_url(backfolder=self._folder)), ) if not self._folder.locked_subfolders() and not self._folder.locked(): if self._folder.may("write") and config.user.may("wato.manage_folders"): yield PageMenuEntry( title=_("Add subfolder"), icon_name="newfolder", item=make_simple_link(self._folder.url([("mode", "newfolder")])), is_shortcut=True, is_suggested=True, ) yield make_folder_status_link(watolib.Folder.current(), view_name="allhosts") if config.user.may("wato.rulesets") or config.user.may("wato.seeall"): yield PageMenuEntry( title=_("Rules"), icon_name="rulesets", item=make_simple_link( watolib.folder_preserving_link([ ("mode", "rule_search"), ("filled_in", "rule_search"), ("folder", watolib.Folder.current().path()), ("search_p_ruleset_used", DropdownChoice.option_id(True)), ("search_p_ruleset_used_USE", "on"), ])), ) if config.user.may("wato.auditlog"): yield PageMenuEntry( title=_("Audit log"), icon_name="auditlog", item=make_simple_link(make_object_audit_log_url(self._folder.object_ref())), )
def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu: if not self._may_edit_config(): return PageMenu(dropdowns=[], breadcrumb=breadcrumb) return PageMenu( dropdowns=[ PageMenuDropdown( name="keys", title=_("Keys"), topics=[ PageMenuTopic( title=_("Add key"), entries=[ PageMenuEntry( title=_("Add key"), icon_name="new", item=make_simple_link( makeuri_contextless( request, [("mode", self.edit_mode)])), is_shortcut=True, is_suggested=True, ), PageMenuEntry( title=_("Upload key"), icon_name="upload", item=make_simple_link( makeuri_contextless( request, [("mode", self.upload_mode)])), is_shortcut=True, is_suggested=True, ), ], ), ], ), ], breadcrumb=breadcrumb, )
def make_host_status_link(host_name: str, view_name: str) -> PageMenuEntry: return PageMenuEntry( title=_("Monitoring status"), icon_name="status", item=make_simple_link( html.makeuri_contextless([ ("view_name", view_name), ("filename", watolib.Folder.current().path() + "/hosts.mk"), ("host", host_name), ("site", ""), ], filename="view.py")), )
def _page_menu_entries_ack_werk( werk: Dict[str, Any]) -> Iterator[PageMenuEntry]: if not may_acknowledge(): return ack_url = html.makeactionuri([("_werk_ack", werk["id"])], filename="version.py") yield PageMenuEntry( title=_("Acknowledge"), icon_name="werk_ack", item=make_simple_link(ack_url), is_enabled=werk["compatible"] == "incomp_unack", )
def page_menu_entries_related_monitoring( self, crash_info: CrashInfo, site_id: SiteId) -> Iterator[PageMenuEntry]: host = crash_info["details"]["host"] service = crash_info["details"]["description"] host_url = makeuri( request, [ ("view_name", "hoststatus"), ("host", host), ("site", site_id), ], filename="view.py", ) yield PageMenuEntry( title=_("Host status"), icon_name="status", item=make_simple_link(host_url), ) service_url = makeuri( request, [ ("view_name", "service"), ("host", host), ("service", service), ( "site", site_id, ), ], filename="view.py", ) yield PageMenuEntry( title=_("Service status"), icon_name="status", item=make_simple_link(service_url), )
def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu: return PageMenu( dropdowns=[ PageMenuDropdown( name="timeperiods", title=_("Time periods"), topics=[ PageMenuTopic( title=_("Add time period"), entries=[ PageMenuEntry( title=_("Add time period"), icon_name="new", item=make_simple_link( watolib.folder_preserving_link([ ("mode", "edit_timeperiod") ])), is_shortcut=True, is_suggested=True, ), PageMenuEntry( title=_("Import iCalendar"), icon_name="ical", item=make_simple_link( watolib.folder_preserving_link([ ("mode", "import_ical") ])), is_shortcut=True, is_suggested=True, ), ], ), ], ), ], breadcrumb=breadcrumb, inpage_search=PageMenuSearch(), )
def make_folder_status_link(folder: watolib.CREFolder, view_name: str) -> PageMenuEntry: return PageMenuEntry( title=_("Status"), icon_name="status", item=make_simple_link( html.makeuri_contextless( [ ("view_name", view_name), ("wato_folder", folder.path()), ], filename="view.py", )), )
def _page_menu_entries_details(self) -> Iterator[PageMenuEntry]: for toggle_id, title, setting in [ ("_show_host_tags", _("host tags"), config.user.wato_folders_show_tags), ("_show_explicit_labels", _("explicit host labels"), config.user.wato_folders_show_labels), ]: yield PageMenuEntry( title=_("Show %s" % title), icon_name="checked_checkbox" if setting else "checkbox", item=make_simple_link( makeuri(global_request, [ (toggle_id, "" if setting else "1"), ])), )
def _page_menu_entries_related( page_name: str, show_shortcuts: bool = True) -> Iterator[PageMenuEntry]: if page_name != "user_change_pw": yield PageMenuEntry( title=_("Change password"), icon_name="topic_change_password", item=make_simple_link("user_change_pw.py"), is_shortcut=show_shortcuts, ) if page_name != "user_two_factor_overview" and user.may( "general.manage_2fa"): yield PageMenuEntry( title=_("Edit two-factor authentication"), icon_name="topic_2fa", item=make_simple_link("user_two_factor_overview.py"), is_shortcut=show_shortcuts, ) if page_name != "user_profile": yield PageMenuEntry( title=_("Edit profile"), icon_name="topic_profile", item=make_simple_link("user_profile.py"), is_shortcut=show_shortcuts, ) if (page_name != "user_notifications_p" and rulebased_notifications_enabled() and user.may("general.edit_notifications")): yield PageMenuEntry( title=_("Notification rules"), icon_name="topic_events", item=make_simple_link("wato.py?mode=user_notifications_p"), is_shortcut=show_shortcuts, )
def make_service_status_link(host_name: str, service_name: str) -> PageMenuEntry: return PageMenuEntry( title=_("Monitoring status"), icon_name="status", item=make_simple_link( makeuri_contextless( request, [ ("view_name", "service"), ("host", host_name), ("service", service_name), ], filename="view.py", )), )
def _page_menu_entries_ack_werk(werk: Dict[str, Any]) -> Iterator[PageMenuEntry]: if not may_acknowledge(): return ack_url = makeactionuri( request, transactions, [("_werk_ack", werk["id"])], filename="change_log.py" ) yield PageMenuEntry( title=_("Acknowledge"), icon_name="werk_ack", item=make_simple_link(ack_url), is_enabled=werk["compatible"] == "incomp_unack", is_shortcut=True, is_suggested=True, )
def _page_menu_entries_actions(self) -> Iterator[PageMenuEntry]: if not self._log_exists(): return if not config.user.may("wato.auditlog"): return if not config.user.may("wato.edit"): return if config.user.may("wato.clear_auditlog"): yield PageMenuEntry( title=_("Clear log"), icon_name="trash", item=make_simple_link(html.makeactionuri([("_action", "clear")])), )
def page_menu(self, breadcrumb: Breadcrumb) -> PageMenu: return PageMenu( dropdowns=[ PageMenuDropdown( name="users", title=_("Users"), topics=[ PageMenuTopic( title=_("Add user"), entries=[ PageMenuEntry( title=_("Add user"), icon_name="new", item=make_simple_link( watolib.folder_preserving_link([ ("mode", "edit_user") ])), is_shortcut=True, is_suggested=True, ), ], ), PageMenuTopic( title=_("Synchronized users"), entries=list( self._page_menu_entries_synchronized_users()), ), PageMenuTopic( title=_("Notify users"), entries=list( self._page_menu_entries_notify_users()), ), ], ), PageMenuDropdown( name="related", title=_("Related"), topics=[ PageMenuTopic( title=_("Setup"), entries=list(self._page_menu_entries_related()), ), ], ), ], breadcrumb=breadcrumb, )
def _page_menu_entries_ack_all_werks() -> Iterator[PageMenuEntry]: if not may_acknowledge(): return yield PageMenuEntry( title=_("Acknowledge all"), icon_name="werk_ack", is_shortcut=True, is_suggested=True, item=make_simple_link( make_confirm_link( url=makeactionuri(request, transactions, [("_ack_all", "1")]), message=_("Do you really want to acknowledge <b>all</b> incompatible werks?"), ) ), is_enabled=bool(unacknowledged_incompatible_werks()), )
def _extend_display_dropdown(self, menu: PageMenu) -> None: display_dropdown = menu.get_dropdown_by_name( "display", make_display_options_dropdown()) display_dropdown.topics.insert( 0, PageMenuTopic( title=_("Filter"), entries=[ PageMenuEntry( title=_("Filter view"), icon_name="filters_set" if html.form_submitted("options") else "filter", item=PageMenuSidePopup(self._render_filter_form()), name="filters", is_shortcut=True, ), ], ), ) display_dropdown.topics.insert( 0, PageMenuTopic( title=_("Details"), entries=[ PageMenuEntry( title=_("Show details"), icon_name="checked_checkbox" if self._show_details else "checkbox", item=make_simple_link( makeactionuri( request, transactions, [ ("show_details", "0" if self._show_details else "1"), ], )), name="show_details", css_classes=["toggle"], ) ], ), )
def _page_menu_entries_export(self) -> Iterator[PageMenuEntry]: if not self._log_exists(): return if not config.user.may("wato.auditlog"): return if not config.user.may("wato.edit"): return if not config.user.may("general.csv_export"): return yield PageMenuEntry( title=_("Export CSV"), icon_name="download_csv", item=make_simple_link(html.makeactionuri([("_action", "csv")])), )
def _extend_display_dropdown(menu: PageMenu) -> None: display_dropdown = menu.get_dropdown_by_name("display", make_display_options_dropdown()) context_hidden = html.request.var('_hidecontext', 'no') == 'yes' display_dropdown.topics.insert( 0, PageMenuTopic( title=_("Context"), entries=[ PageMenuEntry( title=_("Show context"), icon_name="checkbox" if context_hidden else "checked_checkbox", item=make_simple_link( makeactionuri(request, transactions, [ ("_show_backlog", "no") if context_hidden else ("_hidecontext", "yes"), ])), ), ], ))
def render_page_confirm(acktime, failed_notifications): title = _("Confirm failed notifications") breadcrumb = make_simple_page_breadcrumb( mega_menu_registry.menu_monitoring(), title) confirm_url = make_simple_link( make_confirm_link( url=makeactionuri(request, transactions, [("acktime", str(acktime)), ("_confirm", "1")]), message= _("Do you really want to acknowledge all failed notifications up to %s?" ) % cmk.utils.render.date_and_time(acktime), )) page_menu = PageMenu( dropdowns=[ PageMenuDropdown( name="actions", title=_("Actions"), topics=[ PageMenuTopic( title=_("Actions"), entries=[ PageMenuEntry( title=_("Confirm"), icon_name="save", item=confirm_url, is_shortcut=True, is_suggested=True, is_enabled=failed_notifications, ), ], ), ], ), ], breadcrumb=breadcrumb, ) html.header(title, breadcrumb, page_menu) render_notification_table(failed_notifications) html.footer()