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)
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)