Hi Adam
You need location information (-> __parent__) for this setup. Regularly
the object knows that information not until its addition to a container.
Subscribe to ObjectAdded event and do the same setup within the handler
and it will work.
Regards,
Dominik
Adam Groszer wrote:
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')
--
Dominik Huber
Perse Engineering GmbH
Jurastrasse 9a
CH-5406 Baden
E-Mail: [EMAIL PROTECTED]
Telefon: ++41 56 534 7730
begin:vcard
fn:Dominik Huber
n:Huber;Dominik
email;internet:[EMAIL PROTECTED]
tel;work:++41 56 534 77 30
x-mozilla-html:FALSE
version:2.1
end:vcard
_______________________________________________
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com