def get_raw_code(cls, widget_id, params=None): """Gets the raw code for a parameterized widget. This method should be called on a subclass of Widget. """ if cls.__name__ == 'Widget': raise NotImplementedError if params is None: params = {} widget = cls.get(widget_id) # Parameters used to generate the raw code for the widget. # TODO(sll): Why do we convert only the default value to a JS string? parameters = dict( (param.name, params.get( param.name, utils.convert_to_js_string(param.value)) ) for param in widget.params) return utils.parse_with_jinja(widget.template, parameters)
def get_classifier_info(self, widget_id, handler_name, rule, state_params): classifier_func = rule.name.replace(' ', '') first_bracket = classifier_func.find('(') mutable_rule = InteractiveWidget.objects.get(id=widget_id).get_readable_name( handler_name, rule.name) func_name = classifier_func[: first_bracket] str_params = classifier_func[first_bracket + 1: -1].split(',') param_list = [] for index, param in enumerate(str_params): parsed_param = rule.inputs[param] if isinstance(parsed_param, basestring) and '{{' in parsed_param: parsed_param = utils.parse_with_jinja( parsed_param, state_params) typed_object = self.get_typed_object(mutable_rule, param) normalized_param = typed_object.normalize(parsed_param) param_list.append(normalized_param) return func_name, param_list