"""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



Your favorite color:
Red   Blue   Black   Green

''' 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)