Solved: [Zope3-dev] persistent data in (not local) utilitiy
Michael Howitz
mh at gocept.com
Tue Jan 31 03:01:33 EST 2006
Am Montag, den 30.01.2006, 22:53 +0100 schrieb Markus Leist:
> Ok, getUtility() doesn't work, but:
>
> def bootStrapSubscriberDatabase(event):
> [...]
> db, connection, root, root_folder = getInformationFromEvent(event)
> if ( ensureUtility(root_folder, IIkAdminUtility, 'IkAdminUtility', IkAdminUtility, '') ) :
> logger.info("Ensure unnamed IkAdminUtility")
> sm = root_folder.getSiteManager()
> utils = [reg for reg in sm.utilities.registrations()
> if reg.provided.isOrExtends(IIkAdminUtility)]
> # [0] is a dirty quick hack
> instIkAdminUtility = utils[0].component
> instIkAdminUtility.nbrStarts += 1
> [...]
> transaction.get().commit()
> connection.close()
Hi,
zapi.getUtility('IIkAdminUtility', name='IkAdminUtility',
context=root_folder)
should return the utility.
If you really want an unnamed utility you sould install it using:
zope.app.appsetup.bootstrap.ensureUtility(root_folder, IIkAdminUtility,
'', IkAdminUtility)
The utility_type is used as name for the utility so you have to give it
as a parameter to zapi.getUtility
HTH
mac
More information about the Zope3-dev
mailing list