[Zope3-Users] Re: Function that is called when object is fully instantiated

Florian Lindner mailinglists at xgm.de
Tue Nov 21 16:38:38 EST 2006

Am Dienstag, 21. November 2006 04:08 schrieb Fred Drake:
> On 11/20/06, Florian Lindner <mailinglists at xgm.de> wrote:
> > I use is this way:
> >
> > def onObjectAdded(event):
> >     if IJabberClient.providedBy(event.object):
> >         event.object.finishInitialization()
> >
> > the function is outside the class and is registered as a subscriber for
> > IObjectAddedEvent
> This could be made a handler for [IJabberClient, IObjectAddedEvent],
> and skip the providedBy() test in the handler.
> > but inside finishInitialization there are still no values from the schema
> > set to the values I entered on the web-form. There are still at the
> > default values I set them like that: (var1 and var2)
> Are you using browser:addform?  There are four different attributes
> that can be used to tailor when attributes of the object are set:
> arguments, keyword_arguments, set_before_add, and set_after_add.
> Fields that are input but not included in any of these are set after
> adding the object to it's container.

Ok, I've added set_before_add="some of my schema fields" to the addform 
directive and it works. But now I get:

2006-11-21T22:36:16 ERROR SiteError 
Traceback (most recent call last):
  File "/home/florian/Zope3/src/zope/publisher/publish.py", line 138, in 
    publication.afterCall(request, obj)
  File "/home/florian/Zope3/src/zope/app/publication/browser.py", line 78, in 
    super(BrowserPublication, self).afterCall(request, ob)
  File "/home/florian/Zope3/src/zope/app/publication/zopepublication.py", line 
167, in afterCall
  File "/home/florian/Zope3/src/transaction/_transaction.py", line 395, in 
  File "/home/florian/Zope3/src/transaction/_transaction.py", line 495, in 
  File "/home/florian/Zope3/src/ZODB/Connection.py", line 498, in commit
  File "/home/florian/Zope3/src/ZODB/Connection.py", line 543, in _commit
    self._store_objects(ObjectWriter(obj), transaction)
  File "/home/florian/Zope3/src/ZODB/Connection.py", line 570, in 
    p = writer.serialize(obj)  # This calls __getstate__ of obj
  File "/home/florian/Zope3/src/ZODB/serialize.py", line 407, in serialize
    return self._dump(meta, obj.__getstate__())
  File "/home/florian/Zope3/src/ZODB/serialize.py", line 416, in _dump
TypeError: expected string or Unicode object, NoneType found

after my IObjectAddedEvent has been called and the called function had 

Do you know what's wrong here?



More information about the Zope3-users mailing list