[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