Martin Aspeli wrote:
Traceback (innermost last):
  Module ZPublisher.Publish, line 119, in publish
  Module ZPublisher.mapply, line 88, in mapply
  Module ZPublisher.Publish, line 42, in call_object
  Module OFS.ObjectManager, line 524, in manage_delObjects
  Module OFS.ObjectManager, line 379, in _delObject
  Module zope.event, line 23, in notify
  Module zope.component.event, line 26, in dispatch
  Module zope.component._api, line 130, in subscribers
  Module zope.component.registry, line 290, in subscribers
  Module zope.interface.adapter, line 535, in subscribers
  Module zope.component.event, line 33, in objectEventNotify
  Module zope.component._api, line 130, in subscribers
  Module zope.component.registry, line 290, in subscribers
  Module zope.interface.adapter, line 535, in subscribers
  Module OFS.subscribers, line 108, in dispatchObjectWillBeMovedEvent
  Module zope.app.container.contained, line 182, in dispatchToSublocations
  Module zope.component._api, line 130, in subscribers
  Module zope.component.registry, line 290, in subscribers
  Module zope.interface.adapter, line 535, in subscribers
  Module OFS.subscribers, line 108, in dispatchObjectWillBeMovedEvent
  Module zope.app.container.contained, line 182, in dispatchToSublocations
  Module zope.component._api, line 130, in subscribers
  Module zope.component.registry, line 290, in subscribers
  Module zope.interface.adapter, line 535, in subscribers
Module Products.CMFCore.CMFCatalogAware, line 285, in dispatchToOpaqueItems
  Module zope.component._api, line 130, in subscribers
  Module zope.component.registry, line 290, in subscribers
  Module zope.interface.adapter, line 535, in subscribers
Module Products.CMFCore.CMFCatalogAware, line 306, in handleOpaqueItemEvent Module Products.CMFUid.UniqueIdAnnotationTool, line 87, in manage_beforeDelete
  Module zope.component._api, line 207, in getUtility
ComponentLookupError: (<InterfaceClass Products.CMFUid.interfaces.IUniqueIdAnnotationManagement>, '')

The UniqueIDAnnotationTool should probably do a *query*Utility (which will return None in case the utility can't be found) and simply not do anything in such a case. The canonical way of expressing such fail-safe routines is therefore:

  component = query{Utility|Adapter|MultiAdapter}(...)
  if component is not None:
      ...


--
http://worldcookery.com -- Professional Zope documentation and training

_______________________________________________
Zope-CMF maillist  -  Zope-CMF@lists.zope.org
http://mail.zope.org/mailman/listinfo/zope-cmf

See http://collector.zope.org/CMF for bug reports and feature requests

Reply via email to