Example #1
0
    def page(self) -> AjaxPageResult:
        settings = json.loads(request.get_str_input_mandatory("settings"))

        try:
            dashlet_type = cast(Type[ABCFigureDashlet],
                                dashlet_registry[settings.get("type")])
        except KeyError:
            raise MKUserError("type",
                              _("The requested element type does not exist."))

        settings = dashlet_vs_general_settings(
            dashlet_type,
            dashlet_type.single_infos()).value_from_json(settings)

        raw_properties = request.get_str_input_mandatory("properties")
        properties = dashlet_type.vs_parameters().value_from_json(
            json.loads(raw_properties))
        context = json.loads(request.get_str_input_mandatory("context", "{}"))
        # Inject the infos because the datagenerator is a separate instance to dashlet
        # TODO: Can we do better than using fake arguments below? We *really* need an instance,
        # because in general, infos() is an *instance* method, not a class method.
        settings["infos"] = dashlet_type(dashboard_name="",
                                         dashboard={
                                             "context": {}
                                         },
                                         dashlet_id=0,
                                         dashlet={
                                             "context": {}
                                         }).infos()
        response_data = dashlet_type.generate_response_data(
            properties, context, settings)
        return create_figures_response(response_data)
Example #2
0
    def page(self):
        settings = json.loads(html.request.get_str_input_mandatory("settings"))

        try:
            dashlet_type = cast(Type[ABCFigureDashlet], dashlet_registry[settings.get("type")])
        except KeyError:
            raise MKUserError("type", _('The requested element type does not exist.'))

        settings = dashlet_vs_general_settings(
            dashlet_type, dashlet_type.single_infos()).value_from_json(settings)

        raw_properties = html.request.get_str_input_mandatory("properties")
        properties = dashlet_type.vs_parameters().value_from_json(json.loads(raw_properties))
        context = json.loads(html.request.get_str_input_mandatory("context", "{}"))
        # Inject the infos because the datagenerator is a separate instance to dashlet
        settings["infos"] = dashlet_type.infos()
        response_data = dashlet_type.generate_response_data(properties, context, settings)
        return create_figures_response(response_data)