| From | Sent On | Attachments |
|---|---|---|
| Frederik Elwert | Oct 27, 2007 10:51 am | |
| Ian Bicking | Oct 27, 2007 11:16 am | |
| Frederik | Oct 28, 2007 3:24 am |
| Subject: | Re: Dynamic Schema generation for FormEncode | |
|---|---|---|
| From: | Ian Bicking (ianb...@public.gmane.org) | |
| Date: | Oct 27, 2007 11:16:21 am | |
| List: | com.googlegroups.pylons-discuss | |
Frederik Elwert wrote:
I am currently writing a web survey application where users can generate their own surveys.
I have the form generation in place, so forms are generated from the user's survey definition file. Now I want to add validation. As far as I understood the concept of FormEncode, it expects me to know what kind of values I expect when setting up the Schema.
E.g., from the docs:
class EmailForm(formencode.Schema): allow_extra_fields = True filter_extra_fields = True email = formencode.validators.Email(not_empty=True)
Now I can't "hardcode" that I have a variable of type email, I just have information about the variables like:
[('v1', {'type': 'email', 'required': True}), ('v2', {'type: 'int', 'max': 100})]
Now I want to set up a Schema from this information, equivalent to this:
class SurveyForm(formencode.Schema): allow_extra_fields = True filter_extra_fields = True v1 = formencode.validators.Email(not_empty=True) v2 = formencode.validators.Int(not_empty=False, max=100)
Is it somehow possible to generate Schema definitions dynamically like this?
cust_schema = formencode.Schema(allow_extra_fields=True, filter_extra_fields=True) cust_schema.add_field('v1', formencode.validators.Email(not_empty=True) cust_schema.add_field('v2', formencode.validators.Int(not_empty=False, max=100)
By the way, Ian suggested that there were min and max keyword arguments for the Int validator in the "FormEncode form validators" thread, but I don't get them to work:
val = validators.Int(max=5) val.to_python('10')
10
Somehow I thought they were there generally, but they weren't. In the FormEncode trunk they work.
--
Ian Bicking : ianb...@public.gmane.org :
http://blog.ianbicking.org





