-----BEGIN PGP SIGNED MESSAGE-----
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:

 http://docs.repoze.org/colander/#deserializing-an-invalid-serialization

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



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

iEYEARECAAYFAku4gbsACgkQ+gerLs4ltQ6c6ACglnqc5++V2C33QSjZ3oP925rn
1GoAmwSUrqnBYwIXQAABPOxpLCj2L/9m
=h3zU
-----END PGP SIGNATURE-----
_______________________________________________
Repoze-dev mailing list
Repoze-dev@lists.repoze.org
http://lists.repoze.org/listinfo/repoze-dev

Reply via email to