MCPcopy Index your code
hub / github.com/webpy/webpy / Form

Class Form

web/form.py:30–147  ·  view source on GitHub ↗

r""" HTML form. >>> f = Form(Textbox("x")) >>> f.render() u' \n x \n ' >>> f.fill(x="42") True >>> f.render() u' \n <labe

Source from the content-addressed store, hash-verified

28
29
30class Form:
31 r"""
32 HTML form.
33
34 >>> f = Form(Textbox("x"))
35 >>> f.render()
36 u'<table>\n <tr><th><label for="x">x</label></th><td><input id="x" name="x" type="text"/></td></tr>\n</table>'
37 >>> f.fill(x="42")
38 True
39 >>> f.render()
40 u'<table>\n <tr><th><label for="x">x</label></th><td><input id="x" name="x" type="text" value="42"/></td></tr>\n</table>'
41 """
42
43 def __init__(self, *inputs, **kw):
44 self.inputs = inputs
45 self.valid = True
46 self.note = None
47 self.validators = kw.pop("validators", [])
48
49 def __call__(self, x=None):
50 o = copy.deepcopy(self)
51 if x:
52 o.validates(x)
53 return o
54
55 def render(self):
56 out = ""
57 out += self.rendernote(self.note)
58 out += "<table>\n"
59
60 for i in self.inputs:
61 html = (
62 utils.safeunicode(i.pre)
63 + i.render()
64 + self.rendernote(i.note)
65 + utils.safeunicode(i.post)
66 )
67 if i.is_hidden():
68 out += ' <tr style="display: none;"><th></th><td>%s</td></tr>\n' % (
69 html
70 )
71 else:
72 out += f' <tr><th><label for="{net.websafe(i.id)}">{net.websafe(i.description)}</label></th><td>{html}</td></tr>\n'
73 out += "</table>"
74 return out
75
76 def render_css(self):
77 out = []
78 out.append(self.rendernote(self.note))
79 for i in self.inputs:
80 if not i.is_hidden():
81 out.append(
82 f'<label for="{net.websafe(i.id)}">{net.websafe(i.description)}</label>'
83 )
84 out.append(i.pre)
85 out.append(i.render())
86 out.append(self.rendernote(i.note))
87 out.append(i.post)

Callers 2

test_id_escape_issueFunction · 0.90
test_form_validatorsFunction · 0.90

Calls

no outgoing calls

Tested by 2

test_id_escape_issueFunction · 0.72
test_form_validatorsFunction · 0.72