def unknown_close(self, indent, v): name, value, kwargs = v func_name = 'close_' + name if hasattr(self, func_name): return getattr(self, func_name)(indent) else: return indent*' ' + end_tag(name)
def to_html(self): from itertools import groupby def _make(v, caption): v = safe_str(v) args = {'value': v} if isinstance(self.value, (tuple, list)) and v in [safe_str(x) for x in self.value]: args['selected'] = None elif v == safe_str(self.value): args['selected'] = None return str(Tag('option', safe_str(caption), **args)) s = [] #if the choices is 3-elements, then will do the group process group = False if self.choices: group = len(self.choices[0]) > 2 if group: for k, g in groupby(self.choices, lambda x:x[0]): s.append(begin_tag('optgroup', label=k)) for x in g: s.append(_make(x[1], x[2])) s.append(end_tag('optgroup')) else: for v, caption in self.choices: s.append(_make(v, caption)) args = self.kwargs.copy() if self.multiple: args['multiple'] = None args['size'] = self.size return str(Tag('select', '\n'.join(s), **args))
def unknown(self, indent, v): name, value, kwargs = v func_name = 'do_' + name if hasattr(self, func_name): return getattr(self, func_name)(indent, value, **kwargs) else: return indent*' ' + begin_tag(name, **kwargs) + value + end_tag(name)
def to_html(self): from itertools import groupby def _make(v, caption): v = safe_str(v) args = {'value': v} if isinstance(self.value, (tuple, list)) and v in [safe_str(x) for x in self.value]: args['selected'] = None elif v == safe_str(self.value): args['selected'] = None return str(Tag('option', safe_str(caption), **args)) s = [] #if the choices is 3-elements, then will do the group process group = False if self.choices: group = len(self.choices[0]) > 2 if group: for k, g in groupby(self.choices, lambda x:x[0]): s.append(begin_tag('optgroup', label=k)) for x in g: s.append(_make(x[1], x[2])) s.append(end_tag('optgroup')) else: for v, caption in self.choices: s.append(_make(v, caption)) args = self.kwargs.copy() if self.multiple: args['multiple'] = None args['size'] = self.size return str(Tag('select', '\n'.join(s), newline=True, **args))
def do_td_field(self, indent, value, **kwargs): field_name = kwargs.pop('name', None) field = getattr(self.form, field_name) obj = self.form.fields[field_name] if 'label' in kwargs: label = kwargs.pop('label') else: label = obj.label if label: obj.label = label label_text = obj.get_label(_class='field') else: label_text = '' display = field.data or ' ' if 'width' not in kwargs: kwargs['width'] = 200 td = begin_tag('td', **kwargs) + u_str(display) + end_tag('td') return indent * ' ' + '<th align=right width=200>%s</th>%s' % (label_text, td)
def do_td_field(self, indent, value, **kwargs): field_name = kwargs.pop('name', None) field = getattr(self.form, field_name) obj = self.form.fields[field_name] if 'label' in kwargs: label = kwargs.pop('label') else: label = obj.label if label: obj.label = label label_text = obj.get_label(_class='field') else: label_text = '' display = field.data or ' ' if 'width' not in kwargs: kwargs['width'] = 200 td = begin_tag('td', **kwargs) + u_str(display) + end_tag('td') return indent * ' ' + '<th align=right width=200>%s</th>%s' % ( label_text, td)
def close_buttons(self, indent): return indent * ' ' + end_tag('div')