[Zope3-Users] z3c.form: Data Manager - getting value via dm.query() instead of dm.get()

Stephan Richter srichter at cosmos.phy.tufts.edu
Wed Aug 20 21:58:01 EDT 2008


On Wednesday 13 August 2008, Hermann Himmelbauer wrote:
> The problem is, that if the dictionary does not contain all fields, an
> error is raised. The reason for this error lies in line 97 in
> z3c.form.widget: The value is retrieved via the get() function (which does
> a dict.get()) and thus fails.

That is correct. My initial assumption was that a dictionary should define all 
available fields, much like we expect a class instance to have all attributes 
around.

> The solution for this problem would be to replace the datamanager.get() by
> datamanager.query(), as this would return the default field value.
> However, this may break other projects, therefore I would suggest to:
>
> - Introduce some form option such as "ContextQuery=True/False"
> - Either use dm.get() or .query() regarding to this option
>
> What's your opinion on this? Would this be a decent solution?

Looking at the code, I would change the call in widget.py line 97 to a query() 
call. There is another dm.get() call in the code that also would be changed. 
This feature could be added to the 1.9.0 release. Feel free to check in a 
patch.

Regards,
Stephan
-- 
Stephan Richter
Web Software Design, Development and Training
Google me. "Zope Stephan Richter"


More information about the Zope3-users mailing list