[Zope3-french-user] Problème zope.schema

Christophe Combelles ccomb at free.fr
Jeu 14 Fév 18:15:57 CET 2008


Sébastien CHAZALLET a écrit :
> Bonjour,

Salut !

> 
> Afin de tester ce qui existe dans zope.schema, j'ai voulu tenter 
> différentes choses.
> 
> J'ai effectué en intégralité le tutoriel sur z3c traduit par Thierry 
> Florac et je suis parti du code ainsi écrit pour faire mes tests.
> 
> dans contact.py j'ai rajouté :
> 
>    test01 = FieldProperty(interfaces.IContact['test01'])
>    test02 = FieldProperty(interfaces.IContact['test02'])
>    test03 = FieldProperty(interfaces.IContact['test03'])
>    test04 = FieldProperty(interfaces.IContact['test04'])
>    test05 = FieldProperty(interfaces.IContact['test05'])
>    test06 = FieldProperty(interfaces.IContact['test06'])
>    test07 = FieldProperty(interfaces.IContact['test07'])
>    test08 = FieldProperty(interfaces.IContact['test08'])
>    test09 = FieldProperty(interfaces.IContact['test09'])
>    test10 = FieldProperty(interfaces.IContact['test10'])
>    test11 = FieldProperty(interfaces.IContact['test11'])
>    test12 = FieldProperty(interfaces.IContact['test12'])
>    test13 = FieldProperty(interfaces.IContact['test13'])
>    test14 = FieldProperty(interfaces.IContact['test14'])
>    test15 = FieldProperty(interfaces.IContact['test15'])
>    test16 = FieldProperty(interfaces.IContact['test16'])
> 
> 
> dans interfaces.py j'ai rajouté :
> 
> test01 = zope.schema.Text(
>        title=u"Text",
>        required=False)
>    test02 = zope.schema.Bool(
>        title=u"Bool",
>        required=False)
>    test03 = zope.schema.Int(
>        title=u"Int",
>        required=False)
>    test04 = zope.schema.Float(
>        title=u"Float",
>        required=False)# Maxi 3 Chiffres après la virgule.
>    test05 = zope.schema.Decimal(
>        title=u"Decimal",
>        required=False)# Maxi 3 Chiffres après la virgule.
>    test06 = zope.schema.Tuple(
>        title=u"Tuple",
>        required=False)
>    test07 = zope.schema.List(
>        title=u"List",
>        required=False)
>    test08 = zope.schema.Set(
>        title=u"Set",
>        required=False)
>    test09 = zope.schema.FrozenSet(
>        title=u"FrozenSet",
>        required=False)
>    test10 = zope.schema.Password(
>        title=u"Password",
>        required=False)
>    test11 = zope.schema.Dict(
>        title=u"Dict",
>        required=False)
>    test12 = zope.schema.Datetime(
>        title=u"Datetime",
>        required=False)#Format : 12/04/99 10:12
>    test13 = zope.schema.Date(
>        title=u"Date",
>        required=False)#Format : 12/04/99
>    test14 = zope.schema.Timedelta(
>        title=u"Timedelta",
>        required=False)#Format : 0 days, 5:17:12
>    test15 = zope.schema.Time(
>        title=u"Time",
>        required=False)#Format : 10:12
>    test16 = zope.schema.SourceText(
>        title=u"SourceText",
>        required=False)
> 
> 
> J'ai essayé de faire marcher le formulaire addContact :
> Il se trouve que test06, test07, test08, test09 et test11 ne 
> fonctionnent pas du tout.
> (en supprimant ces entrées, tout fonctionne parfaitement)
> 
> En d'autres termes, je n'arrive pas à utiliser les types container 
> (Tuple, List, Set, FrozenSet, Dict)

Pour List, Tuple et les autres, il faut indiquer "value_type" avec un Field qui 
dit de quoi est composée la liste.
Par exemple List(title=u"List",required=False, value_type=Int(title='entier'))
pour une liste d'entiers.
http://apidoc.zope.org/++apidoc++/Interface/zope.schema.interfaces.IList/index.html

Par contre il manque quelques widgets dans z3c.form.
Avec zope.formlib tu peux faire une liste de n'importe quoi, et meme faire
List( value_type=Object( schema=IMonObjet))
et il se démerde pour te fabriquer le formulaire.
Avec z3c.form il faut le faire à la main en utilisant des "subforms". C'est plus 
souple, mais plus long à écrire. J'avais commencé à implémenter un ObjectWidget 
pour qu'il puisse faire ça automatiquement mais j'ai pas eu le temps de finir et 
ça traine dans le bac à sable :(

Christophe


> 
> J'ai esssayé de rajouter des arguments : default, min_length, 
> max_length, key_type, value_type, de chercher s'il fallait rajouter 
> quelque chose de spécifique dans le configure.zcml...
> 
> 
> L'un de vous aurait-il une idée sur la question ou pourrait tester çà 
> chez lui ?
> 
> Merci pour vos réponses.
> 
> 
> Sébastien CHAZALLET
> 
> _______________________________________________
> zope3-french-user mailing list
> zope3-french-user at lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/zope3-french-user
> 
> 




Plus d'informations sur la liste de diffusion zope3-french-user