Hash: SHA1

(forgot to CC the list).

Steve Howe wrote:

> I stepped upon Colander a few days ago in PyPI, and I like it's concept and
> functionality. I have developed something very similar for internal use in
> my company, not as polished however.
> But I think a key functionality is missing from Colander: mapping between
> user interface control and data model.

Hmm, I'm not quite sure how the "data model" ties in here:  Colander
doesn't pretend to know about anything but the "schema", which is about
the serialization format more than any backing store you might be using
(ZODB, SQL, XML, whatever).

> Suppose your data comes from a web
> form, and you have a series of repeated fields that map to the same logical
> field in your deserialized data, and you want to validate, then show
> possible errors back to the user. You'll have the field names and message
> errors. Ex:
> Data model:
> <form>
>   <name>Steve Howe</name>
>   <address>
>     <street>Av. X</street>
>     <number></number>
>     <city></city>
>   <address>
>     <street>Av. Y</street>
>     <number></number>
>     <city></city>
>   </address>
> </form>
> ...e so forth.
> Form model:
> <name/>
> <address1.street/>
> <address1.number/>
> <address1.city/>
> <address2.street/>
> <address2.number/>
> <address2.city/>
> If number for second <address> is wrong, Colander would report something
> like this:
> Invalid: {'number': 'Number is invalid'}
> In the case of a detected error, how do you plan to report that back to the
> user interface (i.e. the web form)? As you can see, there's no simple way to
> map form.address[0].number <-> address1.number.
> In my mentioned internal validation framework, I send a dictionary to the
> server, such as {'field': 'address', 'value': 'Av. X', 'id': 'street2'} (id
> being the form control "name" property) and thus I'll keep a reference to
> the original source the data came from. Being a dictionary, it's extensible
> in case I need to send even more data (then just "name", "value") to the
> server .
> How do you deal with this kind of situation ?

The docs show an error dict in the exception raised by the schema:


Note that the field name for each error is present as the key in that

- --
Tres Seaver          +1 540-429-0999          tsea...@palladion.com
Palladion Software   "Excellence by Design"    http://palladion.com
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

Repoze-dev mailing list

Reply via email to