Re: [Webware-discuss] Example howto use FormEncode with Webware-1.1b1
Am 11.05.2010 13:33 schrieb Georg Balmer: > Next step is your SchemaBuilder suggestion. Just tried it, but it doesn't seem to be very useful since you cannot specify and validator arguments, and I had to fix some things first (see http://bitbucket.org/cito/formencode/changeset/e39881f76131). I've added the examples to our Wiki now: http://wiki.w4py.org/webwareandformencode.html -- Christoph -- ___ Webware-discuss mailing list Webware-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/webware-discuss
Re: [Webware-discuss] Example howto use FormEncode with Webware-1.1b1
Thank your for your excellent help. The basic example works. Next step is your SchemaBuilder suggestion. Regards Georg - Am 11.05.2010 11:44, schrieb Christoph Zwerschke: > Am 11.05.2010 08:53, schrieb Georg Balmer: >> I got the example from a direct download from formencode.org: >> . [2] svn co http://svn.colorstudy.com/FormEncode/trunk FormEncode >> (examples directory: WebwareExamples/index.py) > > Thanks, I was not aware of that example. Seems it was actually written > for Paste WebKit (http://pythonpaste.org/webkit/). > > As you noticed it uses htmlform which is deprecated; you must use > htmlfill directly. You must also add a name="color" attribute to the > checkboxes to make these work. > > It seems your problem is that the formencode errors are now unicode, so > you must encode these. Here is how I got it working with the current > Webware (I simplified it a bit by not using Webware actions): > > > class form(Page): > > schema = FormSchema() > > def awake(self, trans): > Page.awake(self, trans) > try: > fields = self.request().fields() > if 'name' in fields: > fields = self.schema.to_python(fields, self) > else: > fields = self.getDefaults() > except formencode.Invalid, e: > errors = dict((k, v.encode('utf-8')) > for k, v in e.unpack_errors().iteritems()) > else: > errors = None > self.rendered_form = formencode.htmlfill.render(form_template, > defaults=fields, errors=errors) > > def writeContent(self): > self.write(page_style % self.rendered_form) > > def getDefaults(self): > return dict(age='enter your age', color=['blue']) > > > Let me know how it works for you. > > Btw, instead of using a schema, you could also embed the validation info > in the form template and use the SchemaBuilder to parse these. > > -- Christoph > > -- > > ___ > Webware-discuss mailing list > Webware-discuss@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/webware-discuss > -- ___ Webware-discuss mailing list Webware-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/webware-discuss
Re: [Webware-discuss] Example howto use FormEncode with Webware-1.1b1
Am 11.05.2010 08:53, schrieb Georg Balmer: > I got the example from a direct download from formencode.org: > . [2] svn co http://svn.colorstudy.com/FormEncode/trunk FormEncode > (examples directory: WebwareExamples/index.py) Thanks, I was not aware of that example. Seems it was actually written for Paste WebKit (http://pythonpaste.org/webkit/). As you noticed it uses htmlform which is deprecated; you must use htmlfill directly. You must also add a name="color" attribute to the checkboxes to make these work. It seems your problem is that the formencode errors are now unicode, so you must encode these. Here is how I got it working with the current Webware (I simplified it a bit by not using Webware actions): class form(Page): schema = FormSchema() def awake(self, trans): Page.awake(self, trans) try: fields = self.request().fields() if 'name' in fields: fields = self.schema.to_python(fields, self) else: fields = self.getDefaults() except formencode.Invalid, e: errors = dict((k, v.encode('utf-8')) for k, v in e.unpack_errors().iteritems()) else: errors = None self.rendered_form = formencode.htmlfill.render(form_template, defaults=fields, errors=errors) def writeContent(self): self.write(page_style % self.rendered_form) def getDefaults(self): return dict(age='enter your age', color=['blue']) Let me know how it works for you. Btw, instead of using a schema, you could also embed the validation info in the form template and use the SchemaBuilder to parse these. -- Christoph -- ___ Webware-discuss mailing list Webware-discuss@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/webware-discuss