def page_view(): view_name = html.request.var("view_name") if not view_name: return page_index() view_spec = views.get_permitted_views().get(view_name) if not view_spec: raise MKUserError("view_name", "No view defined with the name '%s'." % view_name) view = views.View(view_name, view_spec) view.row_limit = views.get_limit() view.only_sites = views.get_only_sites() view.user_sorters = views.get_user_sorters() title = views.view_title(view_spec) mobile_html_head(title) painter_options = PainterOptions.get_instance() painter_options.load(view_name) try: view_renderer = MobileViewRenderer(view) views.show_view(view, view_renderer) except Exception as e: logger.exception() if config.debug: raise html.write("ERROR showing view: %s" % html.attrencode(e)) mobile_html_foot()
def page_view() -> None: view_name = html.request.var("view_name") if not view_name: return page_index() view_spec = views.get_permitted_views().get(view_name) if not view_spec: raise MKUserError("view_name", "No view defined with the name '%s'." % view_name) datasource = data_source_registry[view_spec["datasource"]]() context = visuals.get_merged_context( visuals.get_context_from_uri_vars( datasource.infos, single_infos=view_spec["single_infos"]), view_spec["context"], ) view = views.View(view_name, view_spec, context) view.row_limit = views.get_limit() view.only_sites = visuals.get_only_sites_from_context(context) view.user_sorters = views.get_user_sorters() view.want_checkboxes = views.get_want_checkboxes() title = views.view_title(view.spec, view.context) mobile_html_head(title) # Need to be loaded before processing the painter_options below. # TODO: Make this dependency explicit display_options.load_from_html(html) painter_options = PainterOptions.get_instance() painter_options.load(view_name) try: views.process_view(MobileViewRenderer(view)) except Exception as e: logger.exception("error showing mobile view") if config.debug: raise html.write("ERROR showing view: %s" % escaping.escape_attribute(str(e))) mobile_html_foot()
def page_view() -> None: view_name = html.request.var("view_name") if not view_name: return page_index() view_spec = views.get_permitted_views().get(view_name) if not view_spec: raise MKUserError("view_name", "No view defined with the name '%s'." % view_name) datasource = data_source_registry[view_spec["datasource"]]() context = visuals.get_merged_context( visuals.get_context_from_uri_vars( datasource.infos, single_infos=view_spec["single_infos"]), view_spec["context"], ) view = views.View(view_name, view_spec, context) view.row_limit = views.get_limit() view.only_sites = views.get_only_sites() view.user_sorters = views.get_user_sorters() title = views.view_title(view_spec) mobile_html_head(title) painter_options = PainterOptions.get_instance() painter_options.load(view_name) try: view_renderer = MobileViewRenderer(view) views.show_view(view, view_renderer) except Exception as e: logger.exception("error showing mobile view") if config.debug: raise html.write("ERROR showing view: %s" % escaping.escape_attribute(str(e))) mobile_html_foot()
def render( self, rows: Rows, show_checkboxes: bool, num_columns: int, show_filters: List[Filter], unfiltered_amount_of_rows: int, ) -> None: view_spec = self.view.spec home = ("mobile.py", "Home", "home") page = html.request.var("page") if not page: if view_spec.get("mustsearch"): page = "filter" else: page = "data" title = views.view_title(self.view.spec, self.view.context) navbar = [("data", _("Results"), "grid", 'results_button'), ("filter", _("Filter"), "search", '')] if config.user.may("general.act"): navbar.append(("commands", _("Commands"), "gear", '')) # Should we show a page with context links? context_links = list( views.collect_context_links(self.view, rows, mobile=True, only_types=['views'])) if context_links: navbar.append(("context", _("Context"), "arrow-r", '')) page_id = "view_" + view_spec["name"] if page == "filter": jqm_page_header(_("Filter / Search"), left_button=home, id_="filter") _show_filter_form(show_filters) jqm_page_navfooter(navbar, 'filter', page_id) elif page == "commands": # Page: Commands if config.user.may("general.act"): jqm_page_header(_("Commands"), left_button=home, id_="commands") show_commands = True if html.request.has_var("_do_actions"): try: show_commands = do_commands( self.view.datasource.infos[0], rows) except MKUserError as e: html.show_error("%s" % e) html.add_user_error(e.varname, e) show_commands = True if show_commands: _show_command_form(self.view.datasource, rows) jqm_page_navfooter(navbar, 'commands', page_id) elif page == "data": # Page: data rows of view jqm_page_header( title, left_button=home, right_button=("javascript:document.location.reload();", _("Reload"), "refresh"), id_="data") html.open_div(id_="view_results") if len(rows) == 0: html.write(_("No hosts/services found.")) else: try: if cmk.gui.view_utils.row_limit_exceeded( unfiltered_amount_of_rows, self.view.row_limit): cmk.gui.view_utils.query_limit_exceeded_warn( self.view.row_limit, config.user) del rows[self.view.row_limit:] self.view.layout.render( rows, view_spec, self.view.group_cells, self.view.row_cells, num_columns, show_checkboxes and not html.do_actions(), ) except Exception as e: logger.exception("error rendering mobile view") html.write(_("Error showing view: %s") % e) html.close_div() jqm_page_navfooter(navbar, 'data', page_id) # Page: Context buttons elif page == "context": jqm_page_header(_("Context"), left_button=home, id_="context") _show_context_links(context_links) jqm_page_navfooter(navbar, 'context', page_id)