Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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))
        )
Ejemplo n.º 4
0
    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,
        })
Ejemplo n.º 5
0
 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))
Ejemplo n.º 6
0
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)
Ejemplo n.º 7
0
    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)
Ejemplo n.º 8
0
    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
        })
Ejemplo n.º 9
0
 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)
Ejemplo n.º 10
0
    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)
                                      })
Ejemplo n.º 11
0
 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,
     ))
Ejemplo n.º 12
0
    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))
Ejemplo n.º 13
0
    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))
Ejemplo n.º 14
0
    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))
Ejemplo n.º 15
0
 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))
Ejemplo n.º 16
0
    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)
Ejemplo n.º 17
0
 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))
Ejemplo n.º 18
0
 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))
Ejemplo n.º 19
0
 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))
Ejemplo n.º 20
0
    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))
Ejemplo n.º 21
0
    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)))
Ejemplo n.º 22
0
    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"] = "&emsp;".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)
Ejemplo n.º 23
0
    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)
Ejemplo n.º 24
0
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))
Ejemplo n.º 25
0
    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,
        ))
Ejemplo n.º 26
0
    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))
Ejemplo n.º 27
0
 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>')
Ejemplo n.º 28
0
    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),
            })
Ejemplo n.º 29
0
 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)
Ejemplo n.º 30
0
    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))