On Fri, Dec 14, 2007 at 07:29:59PM +0100, Christophe Combelles wrote: > how do I automatically create some needed object at application startup? > > Do it by subscribing to IDatabaseOpenedWithRootEvent (from > zope.app.appsetup) > > Example code: > > @adapter(IDatabaseOpenedWithRootEvent) > def CreateMyContainer(event): > conn = event.database.open() > root = conn.root()['Application']
I would use ZopePublication.root_name instead of hardcoding
'Application' here. Or maybe reuse getInformationFromEvent from
zope.app.appsetup.bootstrap, although it smells like an internal
function.
> if 'mycontainer' not in root:
> root['mycontainer'] = MyContainer()
> transaction.commit()
> conn.close()
>
> Then register this subscriber in your configure.zcml:
> <subscriber handler="myapp.CreateMyContainer" />
Marius Gedminas
--
<niemeyer> I'm wondering why we have defineChecker() defined twice with exactly
the same implementation under zope.security.checker...
<niemeyer> Is it some kind of high-availability system? :-)
-- #zope3-dev
signature.asc
Description: Digital signature
_______________________________________________ Zope-Dev maillist - [email protected] http://mail.zope.org/mailman/listinfo/zope-dev ** No cross posts or HTML encoding! ** (Related lists - http://mail.zope.org/mailman/listinfo/zope-announce http://mail.zope.org/mailman/listinfo/zope )
