[Grok-dev] zope.app.keyreference.interfaces.NotYet(object)

Darryl Cousins darryl at darrylcousins.net.nz
Sat Jul 14 21:06:48 EDT 2007


Hi Sebastian,

On Sun, 2007-07-15 at 02:40 +0200, Sebastian Ware wrote:
> Hi!
> 
> I am getting a zope.app.keyreference.interfaces.NotYet(object)  
> exception when creating an instance of a class with the following  
> __init__. I can find any documentation on the exception, does anyone  
> know what might be the cause of the error?
> 
> class ProtonContainer(grok.Container, protonobject.ProtonObject):
> 
>      def __init__(self, creator_id, object_type, title, body, authors):
>          super(ProtonContainer, self).__init__()
> 
>          self.object_type = object_type
>          self.tabs = [{'id':'', 'name':'', 'allowed_object_types':  
> ['type_1', 'type_2']}]
> 
>          self['files'] = 'how are you?'

Here you are adding to the container before it is fully initiated. I
forget the details as to where this raises NotYet error (I think it
happens with ObjectAddedEvent IIRC).

You can get around this by using a subscriber (one of probably many
solutions):

@grok.subscribe(ProtonContainer, grok.IObjectAddedEvent)
def assign_files(obj, evt):
	obj['files'] = 'how are you?'

Or perhaps you simply meant to use self.files? Usually containers
contain objects.

Regards,
Darryl


>          self.title = title
>          self._creator_id = creator_id
>          self._creation_timestamp = datetime.datetime.now()
>          self.body = body
>          self.authors = authors
> 
> *** TRACEBACK ***
> 
>    File "/Users/jhsware/GrokProjects/ProtonCMS/src/protoncms/ 
> protoncontainer.py", line 92, in add
>      new_obj = ProtonContainer(creator_id =  
> self.request.principal.id, object_type='article', **data)
>    File "/Users/jhsware/GrokProjects/ProtonCMS/src/protoncms/ 
> protoncontainer.py", line 22, in __init__
>      self['files'] = 'how are you?'
>    File "/local/zope3.3/lib/python/zope/app/container/sample.py",  
> line 86, in __setitem__
>      setitem(self, self.__data.__setitem__, key, object)
>    File "/local/zope3.3/lib/python/zope/app/container/contained.py",  
> line 593, in setitem
>      notify(event)
>    File "/local/zope3.3/lib/python/zope/event/__init__.py", line 23,  
> in notify
>      subscriber(event)
>    File "/local/zope3.3/lib/python/zope/component/event.py", line 26,  
> in dispatch
>      for ignored in zope.component.subscribers(event, None):
>    File "/local/zope3.3/lib/python/zope/component/_api.py", line 130,  
> in subscribers
>      return sitemanager.subscribers(objects, interface)
>    File "/local/zope3.3/lib/python/zope/component/registry.py", line  
> 290, in subscribers
>      return self.adapters.subscribers(objects, provided)
>    File "/Users/jhsware/GrokProjects/ProtonCMS/eggs/tmpbrEvl3/ 
> zope.interface-3.4.0b1-py2.4-macosx-10.3-i386.egg/zope/interface/ 
> adapter.py", line 535, in subscribers
>    File "/local/zope3.3/lib/python/zope/component/event.py", line 33,  
> in objectEventNotify
>      adapters = zope.component.subscribers((event.object, event), None)
>    File "/local/zope3.3/lib/python/zope/component/_api.py", line 130,  
> in subscribers
>      return sitemanager.subscribers(objects, interface)
>    File "/local/zope3.3/lib/python/zope/component/registry.py", line  
> 290, in subscribers
>      return self.adapters.subscribers(objects, provided)
>    File "/Users/jhsware/GrokProjects/ProtonCMS/eggs/tmpbrEvl3/ 
> zope.interface-3.4.0b1-py2.4-macosx-10.3-i386.egg/zope/interface/ 
> adapter.py", line 535, in subscribers
>    File "/local/zope3.3/lib/python/zope/app/intid/__init__.py", line  
> 163, in addIntIdSubscriber
>      key = IKeyReference(ob, None)
>    File "/local/zope3.3/lib/python/zope/app/component/hooks.py", line  
> 96, in adapter_hook
>      return siteinfo.adapter_hook(interface, object, name, default)
>    File "/local/zope3.3/lib/python/zope/security/adapter.py", line  
> 88, in __call__
>      adapter = self.factory(*args)
>    File "/local/zope3.3/lib/python/zope/app/keyreference/ 
> persistent.py", line 41, in __init__
>      raise zope.app.keyreference.interfaces.NotYet(object)
> NotYet: how are you?
> 
> 
> Mvh Sebastian
> 
> 
> _______________________________________________
> Grok-dev mailing list
> Grok-dev at zope.org
> http://mail.zope.org/mailman/listinfo/grok-dev



More information about the Grok-dev mailing list