Author: chrisz
Date: 2010-05-11 14:32:50 -0600 (Tue, 11 May 2010)
New Revision: 4195
Modified:
FormEncode/trunk/formencode/htmlfill_schemabuilder.py
FormEncode/trunk/tests/test_htmlfill.py
Log:
htmlfill_schemabuilder.parse_schema() was broken.
Modified: FormEncode/trunk/formencode/htmlfill_schemabuilder.py
===================================================================
--- FormEncode/trunk/formencode/htmlfill_schemabuilder.py 2010-05-05
18:49:41 UTC (rev 4194)
+++ FormEncode/trunk/formencode/htmlfill_schemabuilder.py 2010-05-11
20:32:50 UTC (rev 4195)
@@ -7,7 +7,7 @@
``Schema`` object.
"""
-import validators, schema, compound
+import validators, schema, compound, htmlfill
__all__ = ['parse_schema', 'SchemaBuilder']
@@ -16,10 +16,10 @@
Given an HTML form, parse out the schema defined in it and return
that schema.
"""
- listener = htmlfill_schemabuilder.SchemaBuilder()
+ listener = SchemaBuilder()
p = htmlfill.FillingParser(
defaults={}, listener=listener)
- p.feed(self.form)
+ p.feed(form)
p.close()
return listener.schema()
@@ -64,23 +64,23 @@
def schema(self):
return self._schema
-
+
def listen_input(self, parser, tag, attrs):
get_attr = parser.get_attr
name = get_attr(attrs, 'name')
if not name:
# @@: should warn if you try to validate unnamed fields
return
- v = compound.All(validators.Identity())
+ v = compound.All(validators.Identity())
add_to_end = None
# for checkboxes, we must set if_missing = False
- if tag.lower() == "input":
+ if tag.lower() == "input":
type_attr = get_attr(attrs, "type").lower().strip()
if type_attr == "submit":
v.validators.append(validators.Bool())
elif type_attr == "checkbox":
- v.validators.append(validators.Wrapper(to_python = force_list))
- elif type_attr == "file":
+ v.validators.append(validators.Wrapper(to_python = force_list))
+ elif type_attr == "file":
add_to_end = validators.FieldStorageUploadConverter()
message = get_attr(attrs, 'form:message')
required = to_bool(get_attr(attrs, 'form:required', 'false'))
@@ -89,8 +89,8 @@
validators.NotEmpty(
messages=get_messages(validators.NotEmpty, message)))
else:
- v.validators[0].if_missing = False
- if add_to_end:
+ v.validators[0].if_missing = False
+ if add_to_end:
v.validators.append(add_to_end)
v_type = get_attr(attrs, 'form:validate', None)
if v_type:
Modified: FormEncode/trunk/tests/test_htmlfill.py
===================================================================
--- FormEncode/trunk/tests/test_htmlfill.py 2010-05-05 18:49:41 UTC (rev
4194)
+++ FormEncode/trunk/tests/test_htmlfill.py 2010-05-11 20:32:50 UTC (rev
4195)
@@ -74,6 +74,7 @@
print expected
assert 0
checker(p, listener.schema())
+ checker(p, htmlfill_schemabuilder.parse_schema(template))
def test_no_trailing_newline():
assert (htmlfill.render('<html><body></body></html>', {}, {})
@@ -88,10 +89,10 @@
assert (htmlfill.render('<input type="submit" value="Japan -
日本 Nihon" />',
{}, {}) ==
u'<input type="submit" value="Japan - 日本 Nihon" />')
-
+
def test_xhtml():
result = htmlfill.render('<form:error name="code"/>', errors={'code': 'an
error'})
-
+
def test_trailing_error():
assert (htmlfill.render('<input type="text" name="email">',
errors={'email': 'error'},
prefix_error=False)
@@ -131,7 +132,7 @@
def test_unicode():
assert (htmlfill.render(u'<input type="checkbox" name="tags" value="2" />',
- dict(tags=[])) ==
+ dict(tags=[])) ==
'<input type="checkbox" name="tags" value="2" />')
def test_not_force_defaults_text():
@@ -269,7 +270,7 @@
rendered_html = htmlfill.render(html, defaults=dict(),
force_defaults=False)
assert html == rendered_html, rendered_html
-
+
def test_not_force_defaults_select_selected():
html = """
<select name="select-1" class="my_select">
@@ -284,7 +285,7 @@
rendered_html = htmlfill.render(html, defaults={"select-1": "option-1"},
force_defaults=False)
assert html == rendered_html, rendered_html
-
+
def test_not_force_defaults_select_not_selected():
html = """
<select name="select-1" class="my_select">
------------------------------------------------------------------------------
_______________________________________________
FormEncode-CVS mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/formencode-cvs