Esempio n. 1
0
    def render(self, row: Row, cell: Cell) -> CellSpec:
        classes = ["perfometer"]
        if is_stale(row):
            classes.append("stale")

        try:
            title, h = Perfometer(row).render()
            if title is None and h is None:
                return "", ""
        except Exception as e:
            logger.exception("error rendering performeter")
            if active_config.debug:
                raise
            return " ".join(classes), _("Exception: %s") % e

        assert h is not None
        content = (HTMLWriter.render_div(HTML(h), class_=["content"]) +
                   HTMLWriter.render_div(title, class_=["title"]) +
                   HTMLWriter.render_div("", class_=["glass"]))

        # pnpgraph_present: -1 means unknown (path not configured), 0: no, 1: yes
        if display_options.enabled(
                display_options.X) and row["service_pnpgraph_present"] != 0:
            url = cmk_graph_url(row, "service")
            disabled = False
        else:
            url = "javascript:void(0)"
            disabled = True

        return " ".join(classes), HTMLWriter.render_a(
            content=content,
            href=url,
            title=escaping.strip_tags(title),
            class_=["disabled"] if disabled else [],
        )
Esempio n. 2
0
def render_color_icon(color: str) -> HTML:
    return HTMLWriter.render_div(
        "",
        class_="color",
        # NOTE: When we drop support for IE11 we can use #%s4c instead of rgba(...)
        style="background-color: rgba(%d, %d, %d, 0.3); border-color: %s;" %
        (*hex_color_to_rgb_color(color), color),
    )
Esempio n. 3
0
    def _get_popup_trigger_content(self, active_icon: Icon,
                                   menu_item: MainMenuItem) -> HTML:
        content = html.render_icon(menu_item.icon) + html.render_icon(
            active_icon, class_=["active"])

        if not user.get_attribute("nav_hide_icons_title"):
            content += HTMLWriter.render_div(menu_item.title)

        return content
Esempio n. 4
0
def render_metricometer(stack) -> HTML:
    if len(stack) not in (1, 2):
        raise MKGeneralException(
            _("Invalid Perf-O-Meter definition %r: only one or two entries are allowed"
              ) % stack)
    h = HTML().join(map(render_perfometer, stack))
    if len(stack) == 2:
        h = HTMLWriter.render_div(h, class_="stacked")
    return h
Esempio n. 5
0
def _render_tag_group(
    tag_group_id_or_label_key: Union[TaggroupID, str],
    tag_id_or_label_value: Union[TagID, str],
    object_type: str,
    with_link: bool,
    label_type: str,
    label_source: str,
) -> HTML:
    span = HTMLWriter.render_tag(
        HTMLWriter.render_div(
            HTMLWriter.render_span(
                "%s:%s"
                % (
                    tag_group_id_or_label_key,
                    tag_id_or_label_value,
                ),
                class_=["tagify__tag-text"],
            )
        ),
        class_=["tagify--noAnim", label_source],
    )
    if not with_link:
        return span

    if label_type == "tag_group":
        type_filter_vars: HTTPVariables = [
            ("%s_tag_0_grp" % object_type, tag_group_id_or_label_key),
            ("%s_tag_0_op" % object_type, "is"),
            ("%s_tag_0_val" % object_type, tag_id_or_label_value),
        ]
    elif label_type == "label":
        type_filter_vars = [
            (
                "%s_label" % object_type,
                json.dumps(
                    [{"value": "%s:%s" % (tag_group_id_or_label_key, tag_id_or_label_value)}]
                ),
            ),
        ]

    else:
        raise NotImplementedError()

    url_vars: HTTPVariables = [
        ("filled_in", "filter"),
        ("search", "Search"),
        ("view_name", "searchhost" if object_type == "host" else "searchsvc"),
    ]

    url = makeuri_contextless(request, url_vars + type_filter_vars, filename="view.py")
    return HTMLWriter.render_a(span, href=url)
Esempio n. 6
0
 def _tag_tree_bullet(self, state, path, leaf) -> HTML:
     code = HTMLWriter.render_div(
         " ",
         class_=["tagtree"] + (["leaf"] if leaf else []) +
         ["statebullet", "state%d" % state],
     )
     if not leaf:
         code = HTMLWriter.render_a(
             code,
             href="javascript:virtual_host_tree_enter('%s');" %
             "|".join(path),
             title=_("Display the tree only below this node"),
         )
     return code + " "
Esempio n. 7
0
def test_exception_handling(request_context):
    try:
        raise Exception("Test")
    except Exception as e:
        assert compare_html(HTMLWriter.render_div(str(e)), "<div>%s</div>" % e)