[Zope3-dev] Heads up: zope.app.intid and zope.app.keyreference are now optional

Jim Fulton jim at zope.com
Wed Jun 15 19:17:37 EDT 2005


Ivo van der Wijk wrote:
> On 6/14/05, Jim Fulton <jim at zope.com> wrote:
> 
>>In preparation for the 3.1 release, I made these packages (as
>>well as zope.app.observable and zope.app.schema) optional and thus
>>configured vie package includes.  If you have an instance that
>>uses these, you will need to add package includes for these.
>>
> 
> 
> I somewhat missed it - cubic started to work without much errors (the
> catalog simply stopped working)
> 
> After fixing things/ adding includes, I ran into an old issue again (I
> have clean Zope3 svn checkout at this moment, no additional
> hacks/workarounds anymore):
> 
>   File "/home/ivo/Projects/Zope3/Zope3-svn/src/zope/app/security/adapter.py",
> line 88, in __call__    adapter = self.factory(*args)
>   File "/home/ivo/Projects/Zope3/Zope3-svn/src/zope/app/keyreference/persistent.py",
> line 41, in __init__
>     raise zope.app.keyreference.interfaces.NotYet(object)
> NotYet: <zope.app.workflow.stateful.definition.State object at 0xb3bd076c>
> 
> The IntId utility can't handle these exceptions. The following diff
> fixes things (for me, at least)
> 
> Index: intid/__init__.py
> ===================================================================
> --- intid/__init__.py   (revision 30806)
> +++ intid/__init__.py   (working copy)
> @@ -158,7 +158,10 @@
> 
>      utilities = tuple(zapi.getAllUtilitiesRegisteredFor(IIntIds))
>      if utilities: # assert that there are any utilites
> -        key = IKeyReference(ob, None)
> +        try:
> +            key = IKeyReference(ob, None)
> +        except NotYet:
> +            key = None
>          # Register only objects that adapt to key reference
>          if key is not None:
>              for utility in utilities:

Yes, but I worry that this could hide bugs.

You have an object that could potentially be registered, but
can't be yet because we can't get the database yet.  It is being added.
Later, when it has a database, it won't be added again and so won't be
registered.  This will lead to mysterous bugs where objects that should
be cataloged won't be.

Jim

-- 
Jim Fulton           mailto:jim at zope.com       Python Powered!
CTO                  (540) 361-1714            http://www.python.org
Zope Corporation     http://www.zope.com       http://www.zope.org


More information about the Zope3-dev mailing list