コード例 #1
0
ファイル: widgets.py プロジェクト: garimap3/new
    def __call__(self, field, **kwargs):

        rendered = []
        rendered.append('<table class="%s">' % kwargs.pop('table_class', 'table'))
        rendered.append('<thead>')
        rendered.append('<tr>')
        rendered.append('<th>%s</th>' % field.label)
        for value, label in field.choices:
            rendered.append('<th>%s</th>' % label)
        rendered.append('</th>')
        rendered.append('</thead>')
        rendered.append('<tbody>')
        for name, title in field.fields:
            rendered.append('<tr>')
            rendered.append('<td>%s</td>' % title)
            selected = field.data.get(name)
            for value, label in field.choices:
                params = {'type': 'radio', 'name': name, 'value': value}
                if text_type(selected) == text_type(value):
                    params['checked'] = True
                rendered.append('<td><input %s/></td>' % wtforms.widgets.html_params(**params))
            rendered.append('</tr>')
        rendered.append('</tbody>')
        rendered.append('</table>')

        return Markup('\n'.join(rendered))
コード例 #2
0
ファイル: widgets.py プロジェクト: MM1nd/wtfoundation
def html_params(**kwargs):
    """
    This is Verbatim from WTForms BUT "aria_" is handled like "data_"

    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 order to facilitate the use of ``data-`` attributes, the first underscore
    behind the ``data``-element is replaced with a hyphen.
    >>> html_params(data_any_attribute='something')
    'data-any_attribute="something"'
    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]
        elif k.startswith('data_') or k.startswith('aria_') :
            k = k.replace('_', '-', 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)
コード例 #3
0
ファイル: forms.py プロジェクト: mhellmic/b2share
 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>')
コード例 #4
0
ファイル: sweep_field.py プロジェクト: jmancewicz/sweep_field
    def __call__(self, field, **kwargs):
        html = []
        kwargs.setdefault('id', field.id)
        with_div = True
        expended = False

        exp_text = 'style=display:none' if expended else ''

        if with_div:
            html.append('<div>')
        html.append('<span %s>' % widgets.html_params(**kwargs))
        hidden = ''
        html.append('<span class="range-span">')
        for subfield in field:
            if subfield.type == 'HiddenField':
                hidden += text_type(subfield)
            else:
                html.append('<div class="range-div">%s%s</div>' % (hidden, text_type(subfield)))
                hidden = ''

        html.append('</span>')
        html.append('<button type="button" class="btn btn-default btn-sm" id="%s-toggle-button"  name="%s-toggle-button" style="font-size: 16px;">' % (field.name, field.name))
        html.append('  <span></span>')
        html.append('</button>')
        html.append('</span>')

        if with_div:
            html.append('</div>')

        if hidden:
            html.append(hidden)

        return widgets.HTMLString(''.join(html))
コード例 #5
0
ファイル: core.py プロジェクト: Razin-Tailor/ChatterBot
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)
コード例 #6
0
ファイル: core.py プロジェクト: mjmcconnell/angular-cms
    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), quote=False)))
コード例 #7
0
    def __init__(self, enum_class, enums, label=None, validators=None, default=None, **kwargs):
        self._enum_class = enum_class
        self._enums = enums

        # Column(Enum(enum.Enum)) case
        if enum_class is not None:
            labels = [text_type(enum_class.__members__[enum_member].value)
                      for enum_member in enums]

            def coerce(value):
                if value is None:
                    return None
                elif isinstance(value, enum_class):
                    return value
                else:
                    return enum_class.__members__[value]


        # Column(Enum(*enums)) case
        else:
            labels = enums

            def coerce(value):
                if value is None:
                    return None
                return text_type(value)

        choices = list(zip(enums, labels))

        super(EnumField, self).__init__(label=label, validators=validators, default=default,
                                        coerce=coerce, choices=choices, **kwargs)
コード例 #8
0
 def __call__(self, field, **kwargs):
     kwargs.setdefault('id', field.id)
     kwargs.setdefault('rows', self.rows)
     return HTMLString('<textarea %(html_params)s>%(value)s</textarea>' % {
         'html_params': html_params(name=field.name, **kwargs),
         'value': escape(text_type(field._value())),
     })
コード例 #9
0
 def __call__(self, field, **kwargs):
     kwargs.setdefault('id', field.id)
     kwargs['class'] = 'wysiwyg'
     return HTMLString('<textarea %s>%s</textarea>' % (
         html_params(name=field.name, **kwargs),
         escape(text_type(field._value()), quote=False)
     ))
コード例 #10
0
ファイル: core.py プロジェクト: xsleonard/wtforms
 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 ''
コード例 #11
0
ファイル: forms.py プロジェクト: aditiapratama/pillar-web
 def __call__(self, field, **kwargs):
     html = []
     kwargs.setdefault('id', field.id)
     html.append(u'<div %s>' % html_params(**kwargs))
     hidden = u''
     for subfield in field:
         if subfield.type == 'HiddenField':
             hidden += text_type(subfield)
         else:
             html.append(u'<div><span>%s</span>%s%s</div>' % (
                 text_type(subfield.label), hidden, text_type(subfield)))
             hidden = u''
     html.append(u'</div>')
     if hidden:
         html.append(hidden)
     return HTMLString(u''.join(html))
コード例 #12
0
ファイル: test_ndb.py プロジェクト: Trii/wtforms-appengine
 def test_second_book(self):
     authors = set(text_type(x.key.id()) for x in fill_authors(Author))
     authors.add('__None')
     form = model_form(second_ndb_module.SecondBook)
     keys = set()
     for key, b, c in form().author.iter_choices():
         keys.add(key)
コード例 #13
0
ファイル: fields.py プロジェクト: dpgaspar/Flask-AppBuilder
 def _get_object_list(self):
     if self._object_list is None:
         objs = self.query_func()
         self._object_list = list(
             (text_type(self.get_pk_func(obj)), obj) for obj in objs
         )
     return self._object_list
コード例 #14
0
ファイル: fields.py プロジェクト: ahmerkureishi/wtforms
 def test(self):
     form = self.F()
     self.assertEqual(form.a.data, 'a')
     self.assertEqual(form.b.data, None)
     self.assertEqual(form.validate(), False)
     self.assertEqual(
         form.a(),
         (
             """<ul id="a">"""
             """<li><input checked id="a-0" name="a" type="radio" value="a"> <label for="a-0">hello</label></li>"""
             """<li><input id="a-1" name="a" type="radio" value="b"> <label for="a-1">bye</label></li></ul>"""
         )
     )
     self.assertEqual(
         form.b(),
         (
             """<ul id="b">"""
             """<li><input id="b-0" name="b" type="radio" value="1"> <label for="b-0">Item 1</label></li>"""
             """<li><input id="b-1" name="b" type="radio" value="2"> <label for="b-1">Item 2</label></li></ul>"""
         )
     )
     self.assertEqual(
         [text_type(x) for x in form.a],
         ['<input checked id="a-0" name="a" type="radio" value="a">', '<input id="a-1" name="a" type="radio" value="b">']
     )
コード例 #15
0
 def render_option(cls, value, label, selected, disabled=False, **kwargs):
     options = dict(kwargs, value=value)
     if selected:
         options["selected"] = True
     if disabled:
         options["disabled"] = True
     return HTMLString("<option %s>%s</option>" % (html_params(**options), escape(text_type(label))))
コード例 #16
0
ファイル: fields.py プロジェクト: abilian/abilian-core
    def _get_pk_from_identity(obj):
        """Copied / pasted, and fixed, from WTForms_sqlalchemy due to issue w/
        SQLAlchemy >= 1.2."""
        from sqlalchemy.orm.util import identity_key

        cls, key = identity_key(instance=obj)[0:2]
        return ":".join(text_type(x) for x in key)
コード例 #17
0
ファイル: fields.py プロジェクト: shuanz/wtforms-sqlalchemy
 def _get_object_list(self):
     if self._object_list is None:
         query = (self.query
                  if self.query is not None else 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
コード例 #18
0
ファイル: forms.py プロジェクト: babbysross/pillar
 def __call__(self, field, **kwargs):
     html = []
     kwargs.setdefault('id', field.id)
     html.append('<div %s>' % html_params(**kwargs))
     hidden = ''
     for subfield in field:
         if subfield.type == 'HiddenField':
             hidden += text_type(subfield)
         else:
             html.append(
                 '<div><span>%s</span>%s%s</div>' %
                 (text_type(subfield.label), hidden, text_type(subfield)))
             hidden = ''
     html.append('</div>')
     if hidden:
         html.append(hidden)
     return HTMLString(''.join(html))
コード例 #19
0
ファイル: widgets.py プロジェクト: Morabaraba/pmg-cms-2
 def render_option(cls, value, label, selected, **kwargs):
     options = dict(kwargs, value=value)
     options['type'] = 'checkbox'
     if selected:
         options['checked'] = True
     return HTMLString(
         '<div class="checkbox"><label><input %s> %s</label></div>' %
         (html_params(**options), escape(text_type(label))))
コード例 #20
0
ファイル: core.py プロジェクト: PeachWtw/fisherbook
 def __call__(self, field, **kwargs):
     kwargs.setdefault('id', field.id)
     if 'required' not in kwargs and 'required' in getattr(
             field, 'flags', []):
         kwargs['required'] = True
     return HTMLString('<textarea %s>%s</textarea>' %
                       (html_params(name=field.name, **kwargs),
                        escape(text_type(field._value()), quote=False)))
コード例 #21
0
 def __call__(self, field, **kwargs):
     return HTMLString(
         '<script %s>%s</script><script>var um = UM.getEditor("%s");</script>'
         % (
             self.html_params(name=field.name, **kwargs),
             text_type(field._value()),
             field.name,
         ))
コード例 #22
0
ファイル: widgets.py プロジェクト: daimon99/chiki
 def __call__(self, field, **kwargs):
     return HTMLString(
         '<script %s>%s</script><script>var um = UM.getEditor("%s");</script>' % (
             self.html_params(name=field.name, **kwargs),
             text_type(field._value()),
             field.name,
         )
     )
コード例 #23
0
ファイル: fields.py プロジェクト: JesseLabruyere/flask_api
 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
コード例 #24
0
ファイル: core.py プロジェクト: kashifpk/wtdojo
 def __call__(self, field, **kwargs):
     kwargs.setdefault("id", field.id)
     kwargs.setdefault("data-dojo-type", self.dojo_type)
     return HTMLString("<textarea %s %s>%s</textarea>" % (
         html_params(name=field.name, **kwargs),
         get_validation_str(field),
         escape(text_type(field._value())),
     ))
コード例 #25
0
ファイル: core.py プロジェクト: mjmcconnell/angular-cms
 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))
コード例 #26
0
 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 in ('HiddenField', 'CSRFTokenField'):
             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 Markup(''.join(html))
コード例 #27
0
 def _value(self):
     if self.raw_data:
         return self.raw_data[0]
     elif self.data is not None:
         if self.places is not None:
             if hasattr(self.data, 'quantize'):
                 exp = decimal.Decimal('.1') ** self.places
                 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 ''
コード例 #28
0
 def __call__(self, field, **kwargs):
     kwargs.setdefault("id", field.id)
     if "required" not in kwargs and "required" in getattr(
             field, "flags", []):
         kwargs["required"] = True
     return HTMLString("<textarea %s>%s</textarea>" % (
         html_params(name=field.name, **kwargs),
         escape(text_type(field._value()), quote=False),
     ))
コード例 #29
0
    def test_book(self):
        authors = set(text_type(x.key.id()) for x in fill_authors(Author))
        authors.add('__None')
        form = model_form(Book)
        keys = set()
        for key, b, c in form().author.iter_choices():
            keys.add(key)

        self.assertEqual(authors, keys)
コード例 #30
0
 def __call__(self, field, **kwargs):
     """Render button."""
     kwargs.setdefault('id', field.id)
     kwargs.setdefault('type', self.input_type)
     kwargs.setdefault('value', "y")
     return HTMLString(
         '<button %s>%s%s</button>' %
         (html_params(name=field.name, **kwargs), "<i class=\"%s\"></i> " %
          self._icon if self._icon else "", text_type(field.label.text)))
コード例 #31
0
ファイル: test_ndb.py プロジェクト: AiOO/wtforms
    def test_book(self):
        authors = set(text_type(x.key.id()) for x in fill_authors(Author))
        authors.add('__None')
        form = model_form(Book)
        keys = set()
        for key, b, c in form().author.iter_choices():
            keys.add(key)

        self.assertEqual(authors, keys)
コード例 #32
0
 def __call__(self, field, **kwargs):
     html = []
     if self.with_section_tag:
         kwargs.setdefault('id', field.id)
         html.append('<section class="col-md-6" %s>' % html_params(**kwargs))
     hidden = ''
     _params = html_params(**kwargs)
     for subfield in field:
         if subfield.type == 'CSRFTokenField':
             html.append('<div style="display:none" %s>%s</div>' % (_params,text_type(subfield(class_="form-control"))))
         else:
             html.append('<div class="col-md-2" %s>%s</div>' % (_params,text_type(subfield(class_="form-control"))))
             hidden = ''
     if self.with_section_tag:
         html.append('</section>')
     if hidden:
         html.append(hidden)
     return HTMLString(''.join(html))
コード例 #33
0
ファイル: widgets.py プロジェクト: dotajin/haoku-open
 def __call__(self, field, **kwargs):
     kwargs.setdefault('id', field.id)
     kwargs.setdefault('type', 'text/plain')
     kwargs.setdefault('style', 'width:99%;height:360px;')
     kwargs['class'] = ''
     return HTMLString(
         '<script %s>%s</script><script>var um = UM.getEditor("%s");</script>'
         % (html_params(name=field.name, **kwargs), text_type(
             field._value()), field.name))
コード例 #34
0
 def __call__(self, field, **kwargs):
     kwargs.setdefault('id', field.id)
     html=''
     html+='<div class=\"btn-toolbar m-b-sm btn-editor\" data-role=\"editor-toolbar\"data-target=\"#editor\"><div class=\"btn-group\"><a class=\"btn btn-default btn-sm dropdown-toggle\" data-toggle=\"dropdown\"        title=\"Font\"><i class=\"fa fa-font\"></i><b class=\"caret\"></b></a><ul class=\"dropdown-menu\"></ul></div><div class=\"btn-group\"><a class=\"btn btn-default btn-sm dropdown-toggle\" data-toggle=\"dropdown\"        title=\"Font Size\"><i class=\"fa fa-text-height\"></i>            &nbsp;<b class=\"caret\"></b></a><ul class=\"dropdown-menu\"><li><a data-edit=\"fontSize 5\"><font size=\"5\">                        Huge</font></a></li><li><a data-edit=\"fontSize 3\"><font size=\"3\">                        Normal</font></a></li><li><a data-edit=\"fontSize 1\"><font size=\"1\">                        Small</font></a></li></ul></div><div class=\"btn-group\"><a class=\"btn btn-default btn-sm\" data-edit=\"bold\" title=\"Bold (Ctrl/Cmd+B)\"><i class=\"fa fa-bold\"></i></a><a class=\"btn btn-default btn-sm\" data-edit=\"italic\" title=\"Italic (Ctrl/Cmd+I)\"><i class=\"fa fa-italic\"></i></a><a class=\"btn btn-default btn-sm\" data-edit=\"strikethrough\" title=\"Strikethrough\"><i class=\"fa fa-strikethrough\"></i></a><a class=\"btn btn-default btn-sm\" data-edit=\"underline\" title=\"Underline (Ctrl/Cmd+U)\"><i class=\"fa fa-underline\"></i></a></div><div class=\"btn-group\"><a class=\"btn btn-default btn-sm\" data-edit=\"insertunorderedlist\" title=\"Bullet list\"><i class=\"fa fa-list-ul\"></i></a><a class=\"btn btn-default btn-sm\" data-edit=\"insertorderedlist\" title=\"Number list\"><i class=\"fa fa-list-ol\"></i></a><a class=\"btn btn-default btn-sm\" data-edit=\"outdent\" title=\"Reduce indent (Shift+Tab)\"><i class=\"fa fa-dedent\"></i></a><a class=\"btn btn-default btn-sm\" data-edit=\"indent\" title=\"Indent (Tab)\"><i class=\"fa fa-indent\"></i></a></div><div class=\"btn-group\"><a class=\"btn btn-default btn-sm\" data-edit=\"justifyleft\" title=\"Align Left (Ctrl/Cmd+L)\"><i class=\"fa fa-align-left\"></i></a><a class=\"btn btn-default btn-sm\" data-edit=\"justifycenter\" title=\"Center (Ctrl/Cmd+E)\"><i class=\"fa fa-align-center\"></i></a><a class=\"btn btn-default btn-sm\" data-edit=\"justifyright\" title=\"Align Right (Ctrl/Cmd+R)\"><i class=\"fa fa-align-right\"></i></a><a class=\"btn btn-default btn-sm\" data-edit=\"justifyfull\" title=\"Justify (Ctrl/Cmd+J)\"><i class=\"fa fa-align-justify\"></i></a></div><div class=\"btn-group\"><a class=\"btn btn-default btn-sm dropdown-toggle\" data-toggle=\"dropdown\"        title=\"Hyperlink\"><i class=\"fa fa-link\"></i></a><div class=\"dropdown-menu\"><div class=\"input-group m-l-xs m-r-xs\"><input class=\"form-control input-sm\" placeholder=\"URL\" type=\"text\" data-edit=\"createLink\"                /><div class=\"input-group-btn\"><button class=\"btn btn-default btn-sm\" type=\"button\">                        Add</button></div></div></div><a class=\"btn btn-default btn-sm\" data-edit=\"unlink\" title=\"Remove Hyperlink\"><i class=\"fa fa-cut\"></i></a></div><div class=\"btn-group hide\"><a class=\"btn btn-default btn-sm\" title=\"Insert picture (or just drag & drop)\"        id=\"pictureBtn\"><i class=\"fa fa-picture-o\"></i></a><input type=\"file\" data-role=\"magic-overlay\" data-target=\"#pictureBtn\"        data-edit=\"insertImage\" /></div><div class=\"btn-group\"><a class=\"btn btn-default btn-sm\" data-edit=\"undo\" title=\"Undo (Ctrl/Cmd+Z)\"><i class=\"fa fa-undo\"></i></a><a class=\"btn btn-default btn-sm\" data-edit=\"redo\" title=\"Redo (Ctrl/Cmd+Y)\"><i class=\"fa fa-repeat\"></i></a></div></div>'
     html+='<textarea class=\"hide flask-wysiwyg\"   data-editor=\"editor\" %s>%s</textarea>'
     html+='<div id=\"editor\"   style=\"overflow:scroll;height:150px;max-height:150px\"  class="bootstrap-wysiwyg form-control" >%s</div>'
     
     
     return HTMLString(html % (html_params(name=field.name, **kwargs), escape(text_type(field._value())),escape(text_type(field._value()))))
コード例 #35
0
ファイル: core.py プロジェクト: joelsiew/StudyMode
    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_html(label, quote=False)))
コード例 #36
0
 def __call__(self, field, **kwargs):
     data = kwargs.get('data', '')
     if data:
         del kwargs['data']
     kwargs.setdefault('id', field.id)
     return HTMLString('<textarea %s>%s</textarea>' % (
         html_params(name=field.name, **kwargs),
         escape(text_type(data), quote=False)
     ))
コード例 #37
0
ファイル: fields.py プロジェクト: afeide/LuoYunCloud
 def test_iterable_options(self):
     form = self.F()
     first_option = list(form.a)[0]
     self.assertTrue(isinstance(first_option, form.a._Option))
     self.assertEqual(list(text_type(x) for x in form.a), ['<option selected value="a">hello</option>',
                                                         '<option value="btest">bye</option>'])
     self.assertTrue(isinstance(first_option.widget, widgets.Option))
     self.assertTrue(isinstance(list(form.b)[0].widget, widgets.TextInput))
     self.assertEqual(first_option(disabled=True), '<option disabled selected value="a">hello</option>')
コード例 #38
0
ファイル: test_ndb.py プロジェクト: afeide/LuoYunCloud
    def test_no_data(self):
        form = self.F()
        form.author.query = Author.query().order(Author.name)

        assert not form.validate()
        ichoices = list(form.author.iter_choices())
        self.assertEqual(len(ichoices), len(self.authors))
        for author, (key, label, selected) in zip(self.authors, ichoices):
            self.assertEqual(key, text_type(author.key.id()))
コード例 #39
0
    def test_no_data(self):
        form = self.F()
        form.author.query = Author.query().order(Author.name)

        assert not form.validate()
        ichoices = list(form.author.iter_choices())
        self.assertEqual(len(ichoices), len(self.authors))
        for author, (key, label, selected) in zip(self.authors, ichoices):
            self.assertEqual(key, text_type(author.key.id()))
コード例 #40
0
ファイル: forms.py プロジェクト: aresowj/flask-blog
 def _value(self):
     if not isinstance(self.data, str):
         tag_names = []
         if self.data:
             for tag in self.data:
                 tag_names.append(tag.name)
         return text_type(','.join(tag_names)) if tag_names is not None else ''
     else:
         return super(TagInputField, self)._value()
コード例 #41
0
ファイル: wysiwyg.py プロジェクト: Garito/flask-wysiwyg
 def __call__(self, field, **kwargs):
     kwargs.setdefault('id', field.id)
     html=''
     html+='<div class=\"btn-toolbar\" data-role=\"editor-toolbar\" data-target=\"#editor\">'
     html+='      <div class=\"btn-group\">'
     html+='        <a class=\"btn dropdown-toggle\" data-toggle=\"dropdown\" title=\"Font\"><i class=\"icon-font\"></i><b class=\"caret\"></b></a>'
     html+='          <ul class=\"dropdown-menu\">'
     html+='          </ul>'
     html+='        </div>'
     html+='      <div class=\"btn-group\">'
     html+='        <a class=\"btn dropdown-toggle\" data-toggle=\"dropdown\" title=\"Font Size\"><i class=\"icon-text-height\"></i>&nbsp;<b class=\"caret\"></b></a>'
     html+='          <ul class=\"dropdown-menu\">'
     html+='          <li><a data-edit=\"fontSize 5\"><font size=\"5\">Huge</font></a></li>'
     html+='          <li><a data-edit=\"fontSize 3\"><font size=\"3\">Normal</font></a></li>'
     html+='          <li><a data-edit=\"fontSize 1\"><font size=\"1\">Small</font></a></li>'
     html+='          </ul>'
     html+='      </div>'
     html+='      <div class=\"btn-group\">'
     html+='        <a class=\"btn\" data-edit=\"bold\" title=\"Bold (Ctrl/Cmd+B)\"><i class=\"icon-bold\"></i></a>'
     html+='        <a class=\"btn\" data-edit=\"italic\" title=\"Italic (Ctrl/Cmd+I)\"><i class=\"icon-italic\"></i></a>'
     html+='        <a class=\"btn\" data-edit=\"strikethrough\" title=\"Strikethrough\"><i class=\"icon-strikethrough\"></i></a>'
     html+='        <a class=\"btn\" data-edit=\"underline\" title=\"Underline (Ctrl/Cmd+U)\"><i class=\"icon-underline\"></i></a>'
     html+='      </div>'
     html+='      <div class=\"btn-group\">'
     html+='        <a class=\"btn\" data-edit=\"insertunorderedlist\" title=\"Bullet list\"><i class=\"icon-list-ul\"></i></a>'
     html+='        <a class=\"btn\" data-edit=\"insertorderedlist\" title=\"Number list\"><i class=\"icon-list-ol\"></i></a>'
     html+='        <a class=\"btn\" data-edit=\"outdent\" title=\"Reduce indent (Shift+Tab)\"><i class=\"icon-indent-left\"></i></a>'
     html+='        <a class=\"btn\" data-edit=\"indent\" title=\"Indent (Tab)\"><i class=\"icon-indent-right\"></i></a>'
     html+='      </div>'
     html+='      <div class=\"btn-group\">'
     html+='        <a class=\"btn\" data-edit=\"justifyleft\" title=\"Align Left (Ctrl/Cmd+L)\"><i class=\"icon-align-left\"></i></a>'
     html+='        <a class=\"btn\" data-edit=\"justifycenter\" title=\"Center (Ctrl/Cmd+E)\"><i class=\"icon-align-center\"></i></a>'
     html+='        <a class=\"btn\" data-edit=\"justifyright\" title=\"Align Right (Ctrl/Cmd+R)\"><i class=\"icon-align-right\"></i></a>'
     html+='        <a class=\"btn\" data-edit=\"justifyfull\" title=\"Justify (Ctrl/Cmd+J)\"><i class=\"icon-align-justify\"></i></a>'
     html+='      </div>'
     html+='      <div class=\"btn-group\">'
     html+='		  <a class=\"btn dropdown-toggle\" data-toggle=\"dropdown\" title=\"Hyperlink\"><i class=\"icon-link\"></i></a>'
     html+='		    <div class=\"dropdown-menu input-append\">'
     html+='			    <input class=\"span2\" placeholder=\"URL\" type=\"text\" data-edit=\"createLink\"/>'
     html+='			    <button class=\"btn\" type=\"button\">Add</button>'
     html+='        </div>'
     html+='        <a class=\"btn\" data-edit=\"unlink\" title=\"Remove Hyperlink\"><i class=\"icon-cut\"></i></a>'
     html+='      </div>'
     html+='      <div class=\"btn-group\">'
     html+='        <a class=\"btn\" title=\"Insert picture (or just drag & drop)\" id=\"pictureBtn\"><i class=\"icon-picture\"></i></a>'
     html+='        <input type=\"file\" data-role=\"magic-overlay\" data-target=\"#pictureBtn\" data-edit=\"insertImage\" />'
     html+='      </div>'
     html+='      <div class=\"btn-group\">'
     html+='        <a class=\"btn\" data-edit=\"undo\" title=\"Undo (Ctrl/Cmd+Z)\"><i class=\"icon-undo\"></i></a>'
     html+='        <a class=\"btn\" data-edit=\"redo\" title=\"Redo (Ctrl/Cmd+Y)\"><i class=\"icon-repeat\"></i></a>'
     html+='      </div>'
     html+='      <input type=\"text\" data-edit=\"inserttext\" id=\"voiceBtn\" x-webkit-speech=\"\">'
     html+='    </div> '
     html+='    <div id=\"editor\" %s>%s</div> '        
     
     return HTMLString(html % (html_params(name=field.name, **kwargs), escape(text_type(field._value()))))
コード例 #42
0
ファイル: admin.py プロジェクト: sapelson/meieraha2
 def _value(self):
     try:
         js = json.JSONDecoder(
             object_pairs_hook=collections.OrderedDict).decode(self.data)
         return json.dumps(js,
                           indent=4,
                           separators=(',', ': '),
                           ensure_ascii=False)
     except:
         return text_type(self.data) if self.data is not None else ''
コード例 #43
0
ファイル: core.py プロジェクト: alexeib2014/Flask-Android
    def __call__(self, field, **kwargs):
        kwargs.setdefault('id', field.id)

        params = kwargs
        params['name'] = field.name

        return HTMLString('<textarea %s>%s</textarea>' % (
            html_params(params),
            escape(text_type(field._value()), quote=False)
        ))
コード例 #44
0
    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 Markup("<option %s>%s</option>" %
                      (html_params(**options), escape(label)))
コード例 #45
0
 def __call__(self, field, **kwargs):
     """Render button."""
     kwargs.setdefault('id', field.id)
     kwargs.setdefault('type', self.input_type)
     kwargs.setdefault('value', "y")
     return HTMLString('<button %s>%s%s</button>' % (
         html_params(name=field.name, **kwargs),
         "<i class=\"%s\"></i> " % self._icon if self._icon else "",
         text_type(field.label.text)
     ))
コード例 #46
0
ファイル: forms.py プロジェクト: Jinko48/mix-mind
 def render_option(cls, value, label, selected, disabled, **kwargs):
     if value is True:
         # Handle the special case of a 'True' value.
         value = compat.text_type(value)
     options = dict(kwargs, value=value)
     if selected:
         options['selected'] = True
     if disabled:
         options['disabled'] = True
     return widgets.HTMLString('<option %s>%s</option>' % (widgets.html_params(**options), compat.text_type(label)))
コード例 #47
0
ファイル: forms.py プロジェクト: aresowj/flask-blog
 def _value(self):
     if not isinstance(self.data, str):
         tag_names = []
         if self.data:
             for tag in self.data:
                 tag_names.append(tag.name)
         return text_type(
             ','.join(tag_names)) if tag_names is not None else ''
     else:
         return super(TagInputField, self)._value()
コード例 #48
0
 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 in ("HiddenField", "CSRFTokenField"):
             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 Markup("".join(html))
コード例 #49
0
ファイル: core.py プロジェクト: wtforms/wtforms
 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 in ("HiddenField", "CSRFTokenField"):
             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 Markup("".join(html))
コード例 #50
0
 def test_iterable_options(self):
     form = self.F()
     first_option = list(form.a)[0]
     self.assertTrue(isinstance(first_option, form.a._Option))
     self.assertEqual(
         list(text_type(x) for x in form.a),
         ['<option selected value="a">hello</option>', '<option value="btest">bye</option>']
     )
     self.assertTrue(isinstance(first_option.widget, widgets.Option))
     self.assertTrue(isinstance(list(form.b)[0].widget, widgets.TextInput))
     self.assertEqual(first_option(disabled=True), '<option disabled selected value="a">hello</option>')
コード例 #51
0
ファイル: core.py プロジェクト: wtforms/wtforms
    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 Markup(
            "<option %s>%s</option>" % (html_params(**options), escape(label))
        )
コード例 #52
0
 def __call__(self, field, **kwargs):
     kwargs.setdefault('id', field.id)
     field_as_string = text_type(field._value())
     try:
         pretty_printed_string = json.dumps(
             json.loads(field_as_string), indent=4, sort_keys=True)
     except ValueError:
         pretty_printed_string = field_as_string
     return HTMLString('<textarea %s>%s</textarea>' % (
         html_params(name=field.name, **kwargs),
         escape(pretty_printed_string, quote=False)
     ))
コード例 #53
0
def html_params(**kwargs):
    """
    Generate HTML parameters 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.

    >>> html_params(name='text1', id='f', class_='text') == 'class="text" id="f" name="text1"'
    True
    """
    params = []
    for k,v in sorted(iteritems(kwargs)):
        if k in ('class_', 'class__', 'for_'):
            k = k[:-1]
        if v is True:
            params.append(k)
        else:
            params.append('%s="%s"' % (text_type(k), escape(text_type(v), quote=True)))
    return ' '.join(params)
コード例 #54
0
    def test_any_of(self):
        self.assertEqual(AnyOf(['a', 'b', 'c'])(self.form, DummyField('b')), None)
        self.assertRaises(ValueError, AnyOf(['a', 'b', 'c']), self.form, DummyField(None))

        # Anyof in 1.0.1 failed on numbers for formatting the error with a TypeError
        check_num = AnyOf([1, 2, 3])
        self.assertEqual(check_num(self.form, DummyField(2)), None)
        self.assertRaises(ValueError, check_num, self.form, DummyField(4))

        # Test values_formatter
        formatter = lambda values: '::'.join(text_type(x) for x in reversed(values))
        checker = AnyOf([7, 8, 9], message='test %(values)s', values_formatter=formatter)
        self.assertEqual(grab_error_message(checker, self.form, DummyField(4)), 'test 9::8::7')
コード例 #55
0
ファイル: forms.py プロジェクト: chokribr/invenio-1
 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>')
コード例 #56
0
def test_any_of_values_formatter(dummy_form, dummy_field, grab_error_message):
    """
    Test AnyOf values_formatter formating of error message
    """
    formatter = lambda values: '::'.join(
        text_type(x) for x in reversed(values))
    checker = AnyOf([7, 8, 9],
                    message='test %(values)s',
                    values_formatter=formatter)
    dummy_field.data = 4
    expected = 'test 9::8::7'
    with pytest.raises(ValidationError):
        assert grab_error_message(checker(dummy_form, dummy_field)) == expected
コード例 #57
0
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 order to facilitate the use of ``data-`` attributes, the first underscore
    behind the ``data``-element is replaced with a hyphen.

    >>> html_params(data_any_attribute='something')
    'data-any_attribute="something"'

    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]
        elif k.startswith('data_'):
            k = k.replace('_', '-')
        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)
コード例 #58
0
ファイル: utils.py プロジェクト: jalkjaer/airflow
 def __call__(self, field, **kwargs):
     kwargs.setdefault('id', field.id)
     html = '''
     <div id="{el_id}" style="height:100px;">{contents}</div>
     <textarea
         id="{el_id}_ace" name="{form_name}"
         style="display:none;visibility:hidden;">
     </textarea>
     '''.format(
         el_id=kwargs.get('id', field.id),
         contents=escape(text_type(field._value())),
         form_name=field.id,
     )
     return wtforms.widgets.core.HTMLString(html)
コード例 #59
0
 def test(self):
     expected = """<label for="test">Caption</label>"""
     label = Label('test', 'Caption')
     self.assertEqual(label(), expected)
     self.assertEqual(str(label), expected)
     self.assertEqual(text_type(label), expected)
     self.assertEqual(label.__html__(), expected)
     self.assertEqual(label().__html__(), expected)
     self.assertEqual(label('hello'), """<label for="test">hello</label>""")
     self.assertEqual(TextField('hi').bind(Form(), 'a').label.text, 'hi')
     if PYTHON_VERSION < (3, ):
         self.assertEqual(repr(label), "Label(u'test', u'Caption')")
     else:
         self.assertEqual(repr(label), "Label('test', 'Caption')")