This commit is contained in:
2025-05-22 20:25:38 +02:00
parent 09f6750c2b
commit ce03fbf12f
529 changed files with 3353 additions and 3312 deletions

View File

@@ -1,57 +1,3 @@
from wtforms.widgets.core import CheckboxInput
from wtforms.widgets.core import ColorInput
from wtforms.widgets.core import DateInput
from wtforms.widgets.core import DateTimeInput
from wtforms.widgets.core import DateTimeLocalInput
from wtforms.widgets.core import EmailInput
from wtforms.widgets.core import FileInput
from wtforms.widgets.core import HiddenInput
from wtforms.widgets.core import *
from wtforms.widgets.core import html_params
from wtforms.widgets.core import Input
from wtforms.widgets.core import ListWidget
from wtforms.widgets.core import MonthInput
from wtforms.widgets.core import NumberInput
from wtforms.widgets.core import Option
from wtforms.widgets.core import PasswordInput
from wtforms.widgets.core import RadioInput
from wtforms.widgets.core import RangeInput
from wtforms.widgets.core import SearchInput
from wtforms.widgets.core import Select
from wtforms.widgets.core import SubmitInput
from wtforms.widgets.core import TableWidget
from wtforms.widgets.core import TelInput
from wtforms.widgets.core import TextArea
from wtforms.widgets.core import TextInput
from wtforms.widgets.core import TimeInput
from wtforms.widgets.core import URLInput
from wtforms.widgets.core import WeekInput
__all__ = [
"CheckboxInput",
"ColorInput",
"DateInput",
"DateTimeInput",
"DateTimeLocalInput",
"EmailInput",
"FileInput",
"HiddenInput",
"ListWidget",
"MonthInput",
"NumberInput",
"Option",
"PasswordInput",
"RadioInput",
"RangeInput",
"SearchInput",
"Select",
"SubmitInput",
"TableWidget",
"TextArea",
"TextInput",
"TelInput",
"TimeInput",
"URLInput",
"WeekInput",
"html_params",
"Input",
]

View File

@@ -1,3 +1,5 @@
import warnings
from markupsafe import escape
from markupsafe import Markup
@@ -109,7 +111,7 @@ class ListWidget:
html.append(f"<li>{subfield.label} {subfield()}</li>")
else:
html.append(f"<li>{subfield()} {subfield.label}</li>")
html.append(f"</{self.html_tag}>")
html.append("</%s>" % self.html_tag)
return Markup("".join(html))
@@ -132,15 +134,15 @@ class TableWidget:
html = []
if self.with_table_tag:
kwargs.setdefault("id", field.id)
table_params = html_params(**kwargs)
html.append(f"<table {table_params}>")
html.append("<table %s>" % html_params(**kwargs))
hidden = ""
for subfield in field:
if subfield.type in ("HiddenField", "CSRFTokenField"):
hidden += str(subfield)
else:
html.append(
f"<tr><th>{subfield.label}</th><td>{hidden}{subfield}</td></tr>"
"<tr><th>%s</th><td>%s%s</td></tr>"
% (str(subfield.label), hidden, str(subfield))
)
hidden = ""
if self.with_table_tag:
@@ -161,6 +163,7 @@ class Input:
"""
html_params = staticmethod(html_params)
validation_attrs = ["required", "disabled"]
def __init__(self, input_type=None):
if input_type is not None:
@@ -175,8 +178,7 @@ class Input:
for k in dir(flags):
if k in self.validation_attrs and k not in kwargs:
kwargs[k] = getattr(flags, k)
input_params = self.html_params(name=field.name, **kwargs)
return Markup(f"<input {input_params}>")
return Markup("<input %s>" % self.html_params(name=field.name, **kwargs))
class TextInput(Input):
@@ -229,7 +231,6 @@ class HiddenInput(Input):
"""
input_type = "hidden"
validation_attrs = ["disabled"]
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
@@ -244,7 +245,6 @@ class CheckboxInput(Input):
"""
input_type = "checkbox"
validation_attrs = ["required", "disabled"]
def __call__(self, field, **kwargs):
if getattr(field, "checked", field.data):
@@ -261,7 +261,6 @@ class RadioInput(Input):
"""
input_type = "radio"
validation_attrs = ["required", "disabled"]
def __call__(self, field, **kwargs):
if field.checked:
@@ -301,7 +300,6 @@ class SubmitInput(Input):
"""
input_type = "submit"
validation_attrs = ["required", "disabled"]
def __call__(self, field, **kwargs):
kwargs.setdefault("value", field.label.text)
@@ -323,10 +321,9 @@ class TextArea:
for k in dir(flags):
if k in self.validation_attrs and k not in kwargs:
kwargs[k] = getattr(flags, k)
textarea_params = html_params(name=field.name, **kwargs)
textarea_innerhtml = escape(field._value())
return Markup(
f"<textarea {textarea_params}>\r\n{textarea_innerhtml}</textarea>"
"<textarea %s>\r\n%s</textarea>"
% (html_params(name=field.name, **kwargs), escape(field._value()))
)
@@ -359,19 +356,37 @@ class Select:
for k in dir(flags):
if k in self.validation_attrs and k not in kwargs:
kwargs[k] = getattr(flags, k)
select_params = html_params(name=field.name, **kwargs)
html = [f"<select {select_params}>"]
html = ["<select %s>" % html_params(name=field.name, **kwargs)]
if field.has_groups():
for group, choices in field.iter_groups():
optgroup_params = html_params(label=group)
html.append(f"<optgroup {optgroup_params}>")
html.append("<optgroup %s>" % html_params(label=group))
for choice in choices:
val, label, selected, render_kw = choice
if len(choice) == 4:
val, label, selected, render_kw = choice
else:
warnings.warn(
"'iter_groups' is expected to return 4 items tuple since "
"wtforms 3.1, this will be mandatory in wtforms 3.2",
DeprecationWarning,
stacklevel=2,
)
val, label, selected = choice
render_kw = {}
html.append(self.render_option(val, label, selected, **render_kw))
html.append("</optgroup>")
else:
for choice in field.iter_choices():
val, label, selected, render_kw = choice
if len(choice) == 4:
val, label, selected, render_kw = choice
else:
warnings.warn(
"'iter_groups' is expected to return 4 items tuple since "
"wtforms 3.1, this will be mandatory in wtforms 3.2",
DeprecationWarning,
stacklevel=2,
)
val, label, selected = choice
render_kw = {}
html.append(self.render_option(val, label, selected, **render_kw))
html.append("</select>")
return Markup("".join(html))
@@ -549,7 +564,7 @@ class RangeInput(Input):
"""
input_type = "range"
validation_attrs = ["disabled", "max", "min", "step"]
validation_attrs = ["required", "disabled", "max", "min", "step"]
def __init__(self, step=None):
self.step = step
@@ -566,4 +581,3 @@ class ColorInput(Input):
"""
input_type = "color"
validation_attrs = ["disabled"]