[Grok-dev] Re: Problems rendering zope.schema.List
Tres Seaver
tseaver at palladion.com
Tue Jul 17 16:33:52 EDT 2007
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Luciano Ramalho wrote:
> On 7/5/07, Tres Seaver <tseaver at palladion.com> wrote:
>> "Danger, Will Robinson!". Mutable defaults are not going to produce
>> happy results, at least if the 'List' implementation mutates them.
>> List should be checking for None internally, and adding its own *new*
>> empty list if no value is passed (Python will recycle the one created by
>> the list literal across *all* uses).
>
> Thanks for the warning, Tres!
>
> I am aware of the pitfalls of using mutable values in default args.
> However, because the solution I mentioned was suggested by Philipp,
It *can't* be safe, because you have no guarantees that the value will
not be mutated by code elsewhere in the application.
> I > assumed it was safe to do it in that particular case (setting an empty
> list as default value for a List field to prevent an auto-generated
> add form from choking while iterating over None).
The *widget* should handle the case where the default value is None,
here: there is *no* reasonable default value for a list widget that can
be spelled as an attribute of the field at declaration time.
> I've spent some time since then trying to find "proper" way to solve
> this. For example, I tried using an empty tuple instead of a list, but
> I got "WrongType: ((), <type 'list'>)" (I hope the javaification of
> Python in Zope 3 doesn't go much further).
Schemas which specify default values should ideally take a callable
which returns a value; one option is to try calling the 'valuetype' of
the field.
> It seems the only way to really solve this is patching the
> implementation of the Zope 3 list field itself. But I am amazed this
> has never bitten anyone before Sebastian and me. What am I missing?
Maybe nobody is using the 'List' schema field type in "real world"
applications?
Tres.
- --
===================================================================
Tres Seaver +1 540-429-0999 tseaver at palladion.com
Palladion Software "Excellence by Design" http://palladion.com
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org
iD8DBQFGnSew+gerLs4ltQ4RAst/AJ9pW4OiW7CzeSVYyyaSEcgFRBsgSACg0JNa
EBSuXg6R3Yfq1lS2wKbXWOU=
=UlXU
-----END PGP SIGNATURE-----
More information about the Grok-dev
mailing list