[Zope3-Users] z3c.form: Data Manager - getting value via dm.query() instead of dm.get()
Hermann Himmelbauer
dusty at qwer.tk
Thu Aug 14 04:34:58 EDT 2008
> Hi Herman
>
>> Betreff: Re: AW: [Zope3-Users] z3c.form: Data Manager -
>> getting value via dm.query() instead of dm.get()
>
> [...]
>
>> But I would nevertheless suggest to implement some kind of
>> "switch" that decides if an error is raised or NOVALUE is
>> returned in case a value is missing in the underlying object.
>
> I don't understand that.
>
> Why whould you like to store a default value if a value
> is missing. That's just a write access for storing
> what default returns anyway.
Hmmm, perhaps I have to explain my case better:
Normally, z3c.forms are used to edit/display content objects, which is
e.g. a "person object" with attributes such as "name, etc.", which are
then mapped to fields/widgets. In case the underlying data object is a
dictionary, this dictionary has to provide all key/value pairs as
specified in the field.fields().
In my case, I'm creating a search form. This search form does not store
any data into a content object, it just calls a specific search function.
However, the values in the search form should be remembered, so that if
the user comes back to the form, it is already prefilled. Therefore, I
simply store the "data" dictionary of the button handler into the session
and (mis)use this object as content object:
def getContent():
return session.get('searchformkey', {})
def handle_search(self, action):
data, errors = self.extractData()
if errors:
self.searched = None
self.status = self.formErrorsMessage
return
self.do_search(data)
self.session['searchformkey'] = data
So, it may happen, that not all fields are filled out, therefore key/value
pairs may be missing. If that happens, the widget routine throws an error.
If I manage to overcome this error (e.g. by replacing the get() through
query() routine in z3c.form.widget), my form works.
Maybe, there's a better way to accomplish the above, but I could not think
of one...
Best Regards,
Hermann
--
hermann at qwer.tk
GPG key ID: 299893C7 (on keyservers)
FP: 0124 2584 8809 EF2A DBF9 4902 64B4 D16B 2998 93C7
More information about the Zope3-users
mailing list