def __call__(self, field, **kwargs): kwargs.setdefault("id", field.id) kwargs.setdefault("name", field.name) args = { "file": html_params(type="file", **kwargs), "marker": "_%s-delete" % field.name, } if field.data: url = self.get_url(field) args["image"] = html_params(src=url) template = self.data_template else: template = self.empty_template return HTMLString(template % args)
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) kwargs.setdefault('name', field.name) args = { 'file': html_params(type='file', **kwargs), 'marker': '_%s-delete' % field.name } if field.data and isinstance(field.data, string_types): url = self.get_url(field) args['image'] = html_params(src=url) template = self.data_template else: template = self.empty_template return HTMLString(template % args)
def __call__(self, field, **kwargs): kwargs.setdefault("id", field.id) placeholder = "" if field.data and isinstance(field.data, GridFSProxy): data = field.data placeholder = self.template % { "name": escape(data.name), "content_type": escape(data.content_type), "size": data.length // 1024, "marker": "_%s-delete" % field.name, } return HTMLString( "%s<input %s>" % (placeholder, html_params(name=field.name, type="file", **kwargs)) )
def __call__(self, field=None, **kwargs): value, name = '', field.name if field is not None and field.data: if isinstance(field.data, date): value = time.strftime( '%Y-%m-%d %H:%M:%S', field.data.timetuple()) elif isinstance(field.data, (float, int, str, unicode)): value = time.localtime(float(field.data)) value = time.strftime('%Y-%m-%d %H:%M:%S', value) else: value = '格式化有误' return HTMLString(self.template % { 'value': value, 'name': name, })
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) if self.multiple: kwargs['multiple'] = True html = ['<select %s>' % html_params(name=field.name, **kwargs)] for item1, item2 in field.choices: if isinstance(item2, (list, tuple)): group_label = item1 group_items = item2 html.append('<optgroup %s>' % html_params(label=group_label)) for inner_val, inner_label in group_items: html.append(self.render_option(inner_val, inner_label, field.coerce(inner_val) == field.data)) html.append('</optgroup>') else: val = item1 label = item2 html.append(self.render_option(val, label, val == field.data)) html.append('</select>') return HTMLString(''.join(html))
def Widget_submitbutton(field, **kwargs): response = [] if kwargs.get('hidden', False): cls = "flexrow hiddendiv" else: cls = "flexrow" response.append(u"<div class='{}'>\n".format(cls)) # this adds some space so the button is on the right lbl = u"\t<span style='flex-grow: 2;'></span>\n" response.append(lbl) inp = u"\t<input class='button' id='{0}' name='{0}' type='submit' value='{1}'".format(field.name, field.label.text) inp += html_params(**kwargs) + u" />\n" response.append(inp) response.append(u"</div>\n") response = ''.join(response) return HTMLString(response)
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) kwargs.setdefault('type', self.input_type) if 'value' not in kwargs: kwargs['value'] = field._value() flags_html = """ <div class="lang-icon" data-lang="eng"> <span class="flag-icon flag-icon-gb"></span> </div> <div class="lang-icon" data-lang="ukr"> <span class="flag-icon flag-icon-ua"></span> </div> <div class="lang-icon" data-lang="rus"> <span class="flag-icon flag-icon-ru"></span> </div> """ input_html = '<input %s>' % self.html_params(name=field.name, **kwargs) html = flags_html + input_html return HTMLString(html)
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) kwargs.setdefault('name', field.name) args = { 'file': html_params(type='file', **kwargs), 'marker': '_%s-delete' % field.name } template = self.data_template if field.data else self.empty_template return HTMLString(template % { 'text': html_params(type='text', value=field.data), 'file': html_params(type='file', **kwargs), 'marker': '_%s-delete' % field.name })
def __call__(self, field, **kwargs): show_input = True show_preview = True if 'only_input' in kwargs or 'only_preview' in kwargs: show_input = kwargs.pop('only_input', False) show_preview = kwargs.pop('only_preview', False) if not show_input and not show_preview: raise ValueError('One of show_input and show_preview must be true') html = Markup('') if show_input: class_ = kwargs.pop('class', '').split() + \ kwargs.pop('class_', '').split() class_ += ['flask-pagedown-input'] html += Markup(pagedown_pre_html) + super(PageDown, self).__call__( field, id='flask-pagedown-' + field.name, class_=' '.join(class_), **kwargs) + Markup(pagedown_post_html) if show_preview: html += Markup(preview_html % {'field': field.name}) return HTMLString(html)
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) kwargs.setdefault('name', field.name) kwargs.setdefault('endpoint', self.endpoint) kwargs.setdefault('master_id', self.master_id) kwargs.setdefault('style', self.style) input_classes = 'input-group my_select2_ajax' if self.extra_classes: input_classes = input_classes + ' ' + self.extra_classes kwargs.setdefault('class', input_classes) if not field.data: field.data = "" template = self.data_template return HTMLString(template % {'text': html_params(type='text', value=field.data, **kwargs) })
def __call__(self, field, **kwargs): datas = (field.data or '').split('|') if len(datas) == 3: province, city, county = datas else: province, city, county = '', '', '' province_name = '%s_province' % field.name city_name = '%s_city' % field.name county_name = '%s_county' % field.name return HTMLString(self.template % ( html_params(id=field.name), html_params(id=province_name, name=province_name, **kwargs), html_params(id=city_name, name=city_name, **kwargs), html_params(id=county_name, name=county_name, **kwargs), field.name, province, city, county, ))
def __call__(self, field, **kwargs): def iter_choices(choices): html = [] for x in choices: if len(x) == 3: val, label, selected = x html.append(self.render_option(val, label, selected)) elif len(x) == 2: options = iter_choices(x[1]) html.append(self.render_group(x[0], options)) return HTMLString(''.join(html)) kwargs.setdefault('id', field.id) if self.multiple: kwargs['multiple'] = True html = ['<select %s>' % html_params(name=field.name, **kwargs)] html.append(iter_choices(field.iter_choices())) html.append('</select>') return HTMLString(''.join(html))
def __call__(self, field, **kwargs): kwargs.setdefault('data-role', 'select2-ajax') kwargs.setdefault('data-url', get_url('.ajax_lookup', name=field.loader.name)) allow_blank = getattr(field, 'allow_blank', False) if allow_blank and not self.multiple: kwargs['data-allow-blank'] = u'1' kwargs.setdefault('id', field.id) kwargs.setdefault('type', 'hidden') if self.multiple: result = [] ids = [] for value in field.data: data = field.loader.format(value) result.append(data) ids.append(as_unicode(data[0])) separator = getattr(field, 'separator', ',') kwargs['value'] = separator.join(ids) kwargs['data-json'] = json.dumps(result) kwargs['data-multiple'] = u'1' else: data = field.loader.format(field.data) if data: kwargs['value'] = data[0] kwargs['data-json'] = json.dumps(data) placeholder = field.loader.options.get('placeholder', gettext('Please select model')) kwargs.setdefault('data-placeholder', placeholder) minimum_input_length = int( field.loader.options.get('minimum_input_length', 1)) kwargs.setdefault('data-minimum-input-length', minimum_input_length) return HTMLString('<input %s>' % html_params(name=field.name, **kwargs))
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) kwargs.setdefault('type', self.input_type) self.inputId = kwargs.get('id', field.id) self.html = [u'<div class="form-group">'] # Define a configuração do tamanho do label e do input labelSize = kwargs.pop('labelSize', 'col-xs-12 col-md-3') inputSize = kwargs.pop('inputSize', 'col-xs-12 col-md-6') # Define o label do campo self.html.append(u'<label class="control-label %s" for="%s">' % (labelSize, self.inputId)) self.html.append(u'%s' % field.label) # Se o campo for obrigatorio if field.flags.required: self.html.append(u'<span class="required">*</span>') self.html.append(u'</label>') # Define o tamanho do input na template self.html.append(u'<div class="%s">' % inputSize) if 'value' not in kwargs: v = getattr(field, '_value', None) if v: kwargs['value'] = v() if field.errors: self.html.append(u'<div class="has-error">') self.createInput(field, **kwargs) for e in field.errors: self.html.append(u'<span class="help-block">%s</span>' % e) self.html.append(u'</div>') else: self.createInput(field, **kwargs) self.html.append(u'</div>') self.html.append(u'</div>') return HTMLString(''.join(self.html))
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) html = [u'<ul %s>' % html_params(id=field.id)] data = field.data if data: if not isinstance(data, Iterable): data = unquote(data) params = dict(href=data) html.append(u'<li><a target="_blank" %s>%s</a></li>' % (html_params(**params), self.get_filename(data))) else: for link in data: if link: link = unquote(link) params = dict(href=link) html.append( u'<li ><a target="_blank" %s>%s</a></li>' % (html_params(**params), self.get_filename(link))) html.append(u'</ul>') return HTMLString(u''.join(html))
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) placeholder = '' data = ['', ''] selected = '' if field.data: for item in ['天', '小时', '年', '月']: if field.data.endswith(item): data = field.data.split(item) data[1] = item break placeholder = self.template % { 'name': field.name, 'value': str(data[0]), 'type': data[1], 'selected': selected } return HTMLString(placeholder)
def __call__(self, field, **kwargs): sizes = ','.join(str(s) for s in field.sizes) default_img = placeholder(None, field.placeholder) html = [ ('<div class="image-picker-field" data-sizes="{0}" ' 'data-basename="{1}" data-endpoint="{2}">').format( sizes, field.name, field.endpoint ), '<div class="image-picker-preview">', '<img src="{0}" data-placeholder="{1}"/>'.format( field.src or default_img, default_img), '</div>', '<span class="image-picker-btn btn btn-default btn-file">', _('Choose a picture'), field.filename(), field.bbox(), '</span>', '</div>' ] return HTMLString(''.join(html))
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) sub_kwargs = dict((k[4:], v) for k, v in kwargs.iteritems() if k.startswith(self.sub_startswith)) kwargs = dict( filter(lambda x: not x[0].startswith(self.sub_startswith), kwargs.iteritems())) sub_html = '%s %s' % (self.sub_tag, html_params(**sub_kwargs)) html = ['<%s %s>' % (self.html_tag, html_params(**kwargs))] for subfield in field: if self.prefix_label: html.append( '<%s>%s %s</%s>' % (sub_html, subfield.label, subfield(), self.sub_tag)) else: html.append( '<%s>%s %s</%s>' % (sub_html, subfield(), subfield.label, self.sub_tag)) html.append('</%s>' % self.html_tag) return HTMLString(''.join(html))
def __call__(self, field, **kwargs): html = [] kwargs.setdefault('id', field.id) kwargs.setdefault('data-prefix', field.name) render_kw = kwargs.pop('render_kw', {}) html.append("<tr %s>" % html_params(**kwargs)) for subfield in field: html.append('<td data-column="%s"' % subfield.short_name) if is_hidden_field(subfield): html.append(' class="hide"') html.append('>%s</td>' % subfield(**render_kw)) #add remove button html.append('<td data-column="delete">' '<a onclick="$(this).parents(\'tr\')' '.fadeOut(function(){$(this).remove();});">') html.append('<span class="text-danger linklike glyphicon ' 'glyphicon-remove"></span>') html.append('</a></td>') html.append("</tr>") return HTMLString(''.join(html))
def __call__(self, field, **kwargs): """Render table to HTML.""" columns = kwargs.pop('columns', field.columns) rows = kwargs.pop('rows', field.rows) html = [] html.append('<div class="table-responsive"><table class="table ' 'table-striped"><thead><tr><th />') for column in columns: html.append('<th>{}</th>'.format(column)) html.append('</tr></thead><tbody>') for row in rows: html.append('<tr><td><input class="form-check-input" ' 'type="checkbox" name="obj_id" value="{}" ' '/></td>'.format(row[0])) for value in row[1:]: html.append('<td>{}</td>'.format(value)) html.append('</tr>') html.append('</tbody></table></div>') return HTMLString(''.join(html))
def __call__(self, field, **kwargs): display_value = kwargs.pop('display_value', '') kwargs.setdefault('data-value', display_value) kwargs.setdefault('data-role', 'x-editable') kwargs.setdefault('data-url', './ajax/update/') kwargs.setdefault('id', field.id) kwargs.setdefault('name', field.name) kwargs.setdefault('href', '#') if not kwargs.get('pk'): raise Exception('pk required') kwargs['data-pk'] = str(kwargs.pop("pk")) kwargs['data-csrf'] = kwargs.pop("csrf", "") kwargs = self.get_kwargs(field, kwargs) return HTMLString('<a %s>%s</a>' % (html_params(**kwargs), escape(display_value)))
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) kwargs.setdefault('name', field.name) args = {"file": html_params(type="file", **kwargs)} if field.data and isinstance(field.data, string_types): attributes = self.get_attributes(field) args["images"] = " ".join([ "<img src='{}' /><input type='checkbox' name='_{}-delete'>Delete</input>" .format(src, filename) for src, filename in attributes ]) template = self.data_template else: template = self.empty_template return HTMLString(template % args)
def __call__(self, field, **kwargs): kwargs.setdefault("id", field.id) kwargs.setdefault("name", field.name) args = { "text": html_params(type="hidden", value=field.data, name=field.name), "file": html_params(type="file", **kwargs), "marker": "_%s-delete" % field.name, } if field.data and isinstance(field.data, string_types): url = self.get_url(field) args["image"] = html_params(src=url) template = self.data_template else: template = self.empty_template return HTMLString(template % args)
def select_multi_checkbox(field, div_class='', **kwargs): kwargs.setdefault('type', 'checkbox') field_id = kwargs.pop('id', field.id) # div_class = kwargs.pop('class', ) # html = [u'<ul %s>' % html_params(id=field_id, class_=ul_class)] html = [u'<div %s>' % html_params(id=field_id, class_=div_class)] for value, label, checked in field.iter_choices(): choice_id = u'%s-%s' % (field_id, value) options = dict(kwargs, name=field.name, value=value, id=choice_id) if checked: options['checked'] = 'checked' # html.append(u'<li><input %s /> ' % html_params(**options)) # html.append(u'<label for="%s">%s</label></li>' % (field_id, label)) html.append(u'''<div class="form-check-inline col-md-3"> <label class="form-check-label" for="%s"> <input class="form-check-input" %s >%s </label> </div>''' % (field_id, html_params(**options), label)) # html.append(u'</ul>') html.append(u'</div>') return HTMLString(u''.join(html))
def __call__(self, field, **kwargs): params = self.default_params.copy() params.update(kwargs) params.setdefault('id', field.id) params['class_'] = params.get('class_', "") + " form-button" icon = "" if self.icon: icon = '<i class="%s"></i> ' % self.icon state = "" if field._value(): state = '<span class="text-success"> <i class="icon-ok"></i></span>' return HTMLString(u'<button %s>%s%s</button><span %s>%s</span>' % ( html_params(name=field.name, **params), icon, self.label, html_params(id=field.name + '-loader', class_='loader'), state, ))
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) if self.multiple: kwargs['multiple'] = True html = ['<select %s>' % html_params(name=field.name, **kwargs)] for val, label, selected in field.iter_choices(): if callable(val): html.append('<optgroup label="%s">' % escape(text_type(label))) for child_val, child_label, child_selected in val(): html.append(Select.render_option(child_val, child_label, child_selected)) html.append('</optgroup>') else: html.append(Select.render_option(val, label, selected)) html.append('</select>') return HTMLString(''.join(html))
def __call__(self, field, class_='', row_class='row', **kwargs): """There are Bootstrap 3 specific improvements for row wrapping.""" html = [] hidden = '' arguments = self.defaults arguments.update(kwargs) classes = arguments.get('classes', {}) for i, subfield in enumerate(field): if subfield.type == 'HiddenField': hidden += text_type(subfield) else: wrapper_class = classes.get(i, '') html.append('%s<div class="%s">%s</div>' % (hidden, wrapper_class, text_type( subfield(class_=class_, placeholder=subfield.label.text)))) hidden = '' if hidden: html.append(hidden) return HTMLString('<div class="%s">' % (row_class, ) + ''.join(html) + '</div>')
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) kwargs.setdefault('name', field.name) key = '' file_name = '' old = {} old.setdefault('value', '') template = self.data_template if field.data else self.empty_template if field.errors: template = self.empty_template if field.data and isinstance(field.data, FileStorage): value = field.data.filename else: value = field.data or '' old['value'] = field.data if field.data: key = field.data.get('key') file_name = field.data.get('name') url = url_for('.download_view', key=key) a = {} a.setdefault('href', url) return HTMLString( template % { 'file_name': file_name, 'a': html_params(**a), 'old': html_params(**old), 'file': html_params(type='file', value=value, **kwargs), })
def __call__(self, field, **kwargs): kwargs.setdefault('id', field.id) kwargs.setdefault('type', 'hidden') if 'value' not in kwargs: kwargs['value'], val = field._value() hidden = '<input %s/>' % self.html_params(name=field.name, **kwargs) text = '<input %s/>' % self.html_params( name=field.name + '__ac', id=kwargs['id'] + '__ac', type="text", value=val, class_=kwargs.get('class_', '') + ' form-control') terms = "\n".join([ "request['%s'] = request['term'];" % fld for fld in field.search_fields ]) script = self.SCRIPT % { 'name': field.name, 'terms': terms, 'type': field.model_class.__name__.lower(), 'ac_label': field.ac_label } return HTMLString(text + hidden + script)
def __call__(self, field, **kwargs): kwargs.setdefault('data-role', u'select2') kwargs.setdefault('id', field.id) allow_blank = getattr(field, 'allow_blank', False) if allow_blank and not self.multiple: kwargs['data-allow-blank'] = u'1' if self.multiple: kwargs['multiple'] = True html = ['<select %s>' % html_params(name=field.name, **kwargs)] value_list = [] if field.data: value_list = [d.realName for d in field.data] for val, label, _ in field.iter_choices(): selected = False if val[0] in value_list: selected = True html.append(self.render_option(val[0], label, selected, **{'data-type': val[1]})) html.append('</select>') return HTMLString(''.join(html))