def html_params(**kwargs): """ Generate HTML attribute syntax from inputted keyword arguments. The output value is sorted by the passed keys, to provide consistent output each time this function is called with the same parameters. Because of the frequent use of the normally reserved keywords `class` and `for`, suffixing these with an underscore will allow them to be used. In addition, the values ``True`` and ``False`` are special: * ``attr=True`` generates the HTML compact output of a boolean attribute, e.g. ``checked=True`` will generate simply ``checked`` * ``attr=`False`` will be ignored and generate no output. >>> html_params(name='text1', id='f', class_='text') 'class="text" id="f" name="text1"' >>> html_params(checked=True, readonly=False, name="text1", abc="hello") 'abc="hello" checked name="text1"' """ params = [] for k, v in sorted(iteritems(kwargs)): if k in ('class_', 'class__', 'for_'): k = k[:-1] if v is True: params.append(k) elif v is False: pass else: params.append('%s="%s"' % (text_type(k), escape(text_type(v), quote=True))) return ' '.join(params)
def render_option(cls, value, label, selected, **kwargs): if value is True: # Handle the special case of a 'True' value. value = text_type(value) options = dict(kwargs, value=value) if selected: options['selected'] = True return HTMLString('<option %s>%s</option>' % (html_params(**options), escape(text_type(label))))
def _get_object_list(self): if self._object_list is None: query = self.query or self.query_factory() get_pk = self.get_pk self._object_list = list( (text_type(get_pk(obj)), obj) for obj in query) return self._object_list
def _value(self): if self.raw_data: return self.raw_data[0] elif self.data is not None: return text_type(self.data) else: return ''
def __call__(self, field, **kwargs): html = [] if self.with_table_tag: kwargs.setdefault('id', field.id) html.append('<table %s>' % html_params(**kwargs)) hidden = '' for subfield in field: if subfield.type == 'HiddenField': hidden += text_type(subfield) else: html.append( '<tr><th>%s</th><td>%s%s</td></tr>' % (text_type(subfield.label), hidden, text_type(subfield))) hidden = '' if self.with_table_tag: html.append('</table>') if hidden: html.append(hidden) return HTMLString(''.join(html))
def _value(self): if self.raw_data: return self.raw_data[0] elif self.data is not None: if self.use_locale: return text_type(self._format_decimal(self.data)) elif self.places is not None: if hasattr(self.data, 'quantize'): exp = decimal.Decimal('.1')**self.places if self.rounding is None: quantized = self.data.quantize(exp) else: quantized = self.data.quantize(exp, rounding=self.rounding) return text_type(quantized) else: # If for some reason, data is a float or int, then format # as we would for floats using string formatting. format = '%%0.%df' % self.places return format % self.data else: return text_type(self.data) else: return ''
def render_option(cls, value, label, selected, **kwargs): if value is True: # Handle the special case of a 'True' value. value = text_type(value) options = dict(kwargs, value=value) if selected: options['selected'] = True if value == '__None': return HTMLString('<option %s>%s</option>' % (html_params(**options), escape(text_type(label)))) else: if hasattr(label, "level") and hasattr(label, "name"): if label.level == 9999 and label.name == u'super_monkey' and (selected is False or selected is None): return None return HTMLString('<option %s>%s</option>' % (html_params(**options), escape(text_type(label.title))))
def get_pk_from_identity(obj): cls, key = identity_key(instance=obj) return ':'.join(text_type(x) for x in key)
def __init__(self, values, message=None, values_formatter=None): self.values = values self.message = message if values_formatter is None: values_formatter = lambda v: ', '.join(text_type(x) for x in v) self.values_formatter = values_formatter
def default_values_formatter(values): return ', '.join(text_type(x) for x in values)
def _value(self): if self.raw_data: return text_type(self.raw_data[0]) else: return 'y'
def _value(self): return text_type(self.data) if self.data is not None else ''
def _value(self): return text_type(self.data)
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) return HTMLString('<textarea %s>%s</textarea>' % (html_params( name=field.name, **kwargs), escape(text_type(field._value()))))
def _value(self): if self.raw_data: return self.raw_data[0] else: return text_type('\n'.join(self.data)) if self.data else ''
def _value(self): if self.raw_data: return self.raw_data[0] else: return self.data and text_type("\n".join(self.data)) or ''