from .. import widgets
from .core import Field
__all__ = (
"BooleanField",
"TextAreaField",
"PasswordField",
"FileField",
"MultipleFileField",
"HiddenField",
"SearchField",
"SubmitField",
"StringField",
"TelField",
"URLField",
"EmailField",
"ColorField",
)
class BooleanField(Field):
"""
Represents an ````. Set the ``checked``-status by using the
``default``-option. Any value for ``default``, e.g. ``default="checked"`` puts
``checked`` into the html-element and sets the ``data`` to ``True``
:param false_values:
If provided, a sequence of strings each of which is an exact match
string of what is considered a "false" value. Defaults to the tuple
``(False, "false", "")``
"""
widget = widgets.CheckboxInput()
false_values = (False, "false", "")
def __init__(self, label=None, validators=None, false_values=None, **kwargs):
super().__init__(label, validators, **kwargs)
if false_values is not None:
self.false_values = false_values
def process_data(self, value):
self.data = bool(value)
def process_formdata(self, valuelist):
if not valuelist or valuelist[0] in self.false_values:
self.data = False
else:
self.data = True
def _value(self):
if self.raw_data:
return str(self.raw_data[0])
return "y"
class StringField(Field):
"""
This field is the base for most of the more complicated fields, and
represents an ````.
"""
widget = widgets.TextInput()
def process_formdata(self, valuelist):
if valuelist:
self.data = valuelist[0]
def _value(self):
return str(self.data) if self.data is not None else ""
class TextAreaField(StringField):
"""
This field represents an HTML ``