"""Demo for using FormEncode with Webware."""
# Tested with Webware 1.1 and FormEncode 1.2.3
from formencode import compound, Invalid, htmlfill, Schema, validators
from formencode.htmlfill_schemabuilder import parse_schema
from WebKit.Examples.ExamplePage import ExamplePage
form_template = '''
Tell me about yourself
'''
class FormExample2(ExamplePage):
"""Demo for using FormEncode with Webware."""
schema = parse_schema(form_template)
def getDefaults(self):
return dict(age='enter your age', color=['blue'])
def writeStyleSheet(self):
ExamplePage.writeStyleSheet(self)
self.writeln('''''')
def awake(self, trans):
ExamplePage.awake(self, trans)
if self.request().hasField('name'):
fields = self.request().fields()
try:
fields = self.schema.to_python(fields, self)
except Invalid, e:
errors = dict((k, v.encode('utf-8'))
for k, v in e.unpack_errors().iteritems())
else:
errors = None
else:
fields = self.getDefaults()
errors = None
self.rendered_form = htmlfill.render(form_template,
defaults=fields, errors=errors)
def writeContent(self):
self.write(self.rendered_form)