quixote/form widget.py,1.26,1.27
Neil Schemenauer <nascheme-fVcApmY9cLvQ3/1i3zOLAti2O/[email protected]>
| Newsgroups | gmane.comp.web.quixote.cvs |
|---|---|
| Message-ID | <[email protected]> |
Update of /home/cvs/quixote/form
In directory hewson:/tmp/cvs-serv20540
Modified Files:
widget.py
Log Message:
Modify form and widget classes to return htmltext instances. This is a
backards incompatible change.
Index: widget.py
===================================================================
RCS file: /home/cvs/quixote/form/widget.py,v
retrieving revision 1.26
retrieving revision 1.27
diff -u -d -r1.26 -r1.27
--- widget.py 20 Sep 2002 22:45:39 -0000 1.26
+++ widget.py 14 Oct 2002 23:19:18 -0000 1.27
@@ -10,7 +10,7 @@
from types import *
from quixote import get_request
-from quixote.html import html_quote, render_tag, ValuelessAttr
+from quixote.html import htmltext, htmlescape, htmltag, ValuelessAttr
class FormValueError (Exception):
@@ -133,12 +133,12 @@
def render (self, request):
- return render_tag("input", xml_end=1,
- type=self.html_type,
- name=self.name,
- size=self.size,
- maxlength=self.maxlength,
- value=self.value)
+ return htmltag("input", xml_end=1,
+ type=self.html_type,
+ name=self.name,
+ size=self.size,
+ maxlength=self.maxlength,
+ value=self.value)
class PasswordWidget (StringWidget):
@@ -173,11 +173,11 @@
self.rows = rows
def render (self, request):
- return (render_tag("textarea", name=self.name,
- cols=self.cols,
- rows=self.rows) +
- html_quote(self.value, "") +
- "</textarea>")
+ return (htmltag("textarea", name=self.name,
+ cols=self.cols,
+ rows=self.rows) +
+ htmlescape(self.value or "") +
+ htmltext("</textarea>"))
def parse (self, request):
@@ -200,11 +200,11 @@
widget_type = "checkbox"
def render (self, request):
- return render_tag("input", xml_end=1,
- type="checkbox",
- name=self.name,
- value="yes",
- checked=self.value and ValuelessAttr or None)
+ return htmltag("input", xml_end=1,
+ type="checkbox",
+ name=self.name,
+ value="yes",
+ checked=self.value and ValuelessAttr or None)
def parse (self, request):
@@ -260,7 +260,7 @@
for v in self.allowed_values:
if v is None:
v = ""
- else:
+ else:
v = str(v)
self.descriptions.append(v)
else:
@@ -272,8 +272,8 @@
"not %s and %s" % (len(self.allowed_values),
len(descriptions)))
self.descriptions = descriptions
- if self.quote:
- self.descriptions = map(html_quote, self.descriptions)
+ if not self.quote:
+ self.descriptions = map(htmltext, self.descriptions)
if sort:
def compare(a, b):
if a[0] is None:
@@ -303,21 +303,21 @@
onchange = "submit()"
else:
onchange = None
- tags = [render_tag("select", name=self.name,
- multiple=multiple, onchange=onchange,
- size=self.size)]
+ tags = [htmltag("select", name=self.name,
+ multiple=multiple, onchange=onchange,
+ size=self.size)]
for i in range(len(self.allowed_values)):
if self.is_selected(self.allowed_values[i]):
selected = ValuelessAttr
else:
selected = None
- r = render_tag("option",
- value=str(i),
- selected=selected)
- tags.append(str(r) + self.descriptions[i] + '</option>')
- tags.append("</select>")
- return "\n".join(tags)
+ r = htmltag("option",
+ value=str(i),
+ selected=selected)
+ tags.append(r + self.descriptions[i] + htmltext('</option>'))
+ tags.append(htmltext("</select>"))
+ return htmltext("\n").join(tags)
class SingleSelectWidget (SelectWidget):
@@ -389,13 +389,13 @@
checked = ValuelessAttr
else:
checked = None
- r = render_tag("input",
- type="radio",
- name=self.name,
- value=str(i),
- checked=checked)
- tags.append(str(r) + self.descriptions[i] + '</input>')
- return self.delim.join(tags)
+ r = htmltag("input",
+ type="radio",
+ name=self.name,
+ value=str(i),
+ checked=checked)
+ tags.append(r + self.descriptions[i] + htmltext('</input>'))
+ return htmlescape(self.delim).join(tags)
class MultipleSelectWidget (SelectWidget):
@@ -460,9 +460,9 @@
Widget.__init__(self, name, value)
def render (self, request):
- value = (self.value and html_quote(self.value) or None)
- return render_tag("input", xml_end=1, type="submit",
- name=self.name, value=value)
+ value = (self.value and htmlescape(self.value) or None)
+ return htmltag("input", xml_end=1, type="submit",
+ name=self.name, value=value)
def parse (self, request):
return request.form.get(self.name)
@@ -482,11 +482,11 @@
if self.value is None:
value = None
else:
- value = html_quote(self.value)
- return render_tag("input", xml_end=1,
- type="hidden",
- name=self.name,
- value=value)
+ value = htmlescape(self.value)
+ return htmltag("input", xml_end=1,
+ type="hidden",
+ name=self.name,
+ value=value)
def set_current_value (self, value):
self.value = value
@@ -601,9 +601,9 @@
def render (self, request):
return (SingleSelectWidget.render(self, request) +
- '<noscript>'
- '<input type="submit" name="" value="apply" />'
- '</noscript>')
+ htmltext('<noscript>'
+ '<input type="submit" name="" value="apply" />'
+ '</noscript>'))
def parse (self, request):
return self.value
@@ -628,7 +628,7 @@
**args):
assert value is None or type(value) is ListType, (
"form value '%s' not a ListType: got %s" % (name, `value`))
- assert type(element_name) is StringType, (
+ assert type(element_name) in (StringType, htmltext), (
"form value '%s' element_name not a string: "
"got %s" % (name, `element_name`))
@@ -673,10 +673,10 @@
def render (self, request):
tags = []
for element_widget in self.element_widgets:
- tags.append(str(element_widget.render(request)))
+ tags.append(element_widget.render(request))
tags.append(self.add_button.render(request))
tags.append(self.added_elements_widget.render(request))
- return '<br />\n'.join(tags)
+ return htmltext('<br />\n').join(tags)
def parse (self, request):