[Zope3-dev] How to provide some default utilities for sub-site

Adam Groszer adamg at fw.hu
Fri Nov 4 06:43:04 EST 2005


I'd like to provide some default utilities for my sub-site.
As I checked there is the nice ensureUtility method but as it turns
out it failes with

...
  Module szscreen.app, line 339, in __init__
    'WorkflowUtility', WorkflowUtility, 'wfu')
  Module zope.app.appsetup.bootstrap, line 66, in ensureUtility
    name, **kw
  Module zope.app.appsetup.bootstrap, line 74, in addConfigureUtility
    utility_name = addUtility(root_folder, utility_type, utility_factory, **kw)
  Module zope.app.appsetup.bootstrap, line 83, in addUtility
    package = getSiteManagerDefault(root_folder)
  Module zope.app.appsetup.bootstrap, line 105, in getSiteManagerDefault
    package = traverse(root_folder, package_name)
  Module zope.app.traversing.api, line 96, in traverse
    return traverser.traverse(path, request=request)
  Module zope.app.traversing.adapters, line 120, in traverse
    curr = IPhysicallyLocatable(self.context).getRoot()
  Module zope.app.location.traversing, line 90, in getRoot
    raise TypeError("Not enough context to determine location root")
TypeError: Not enough context to determine location root

when it checks the existence of the utility it uses
  sm = root_folder.getSiteManager()
but when it wants to add the non existing utility
  package = getSiteManagerDefault(root_folder)
which in turn wants to traverse like this
  package_name = '/++etc++site/default'
  package = traverse(root_folder, package_name)

Is there any way to easily solve the task?

Excerpt from szscreen.app:

class IApplication(IReadContainer, IPossibleSite, IAttributeAnnotatable):
      ""

class Application(Persistent, SampleContainer, SiteManagerContainer):

        implements(IApplication)
        
        def __init__(self):
                SampleContainer.__init__(self)
                
                sm = LocalSiteManager(self)
                self.setSiteManager(sm)

                ...
                
                ensureUtility(self, IWorkflowUtility,
                        'WorkflowUtility', WorkflowUtility, 'wfu')

-- 
Best regards,
 Adam                          mailto:adamg at fw.hu
--
Quote of the day:
I do not think there is any other quality so essential to success of
any kind as the quality of perseverance.  It overcomes almost
everything, even nature.
(John D. Rockefeller)



More information about the Zope3-dev mailing list