Aktionen beim Hochfahren des Zope3-Servers ausführen

Wenn man in einer Zope-Applikation sicherstellen möchte, dass die Umgebung korrekt aufgesetzt ist, kann man beim Hochfahren des Zope-Servers entsprechende Aktionen ausführen. (Zum Beispiel, Utilities programmatisch, statt manuell anzulegen.)

by Michael Howitz posted at 2006-01-30 10:12 last modified 2006-01-30 10:12

Um sich in das Hochfahren von Zope einzuklinken, ist es nötig, sich an den IDatabaseOpenedEvent zu subscriben. Das geschieht in der configure.zcml so:

<subscriber
    for="zope.app.appsetup.IDatabaseOpenedEvent"
    handler=".bootstrap.bootStrapSubscriber"
    />

Der Handler ist eine Python-Funktion, die in der Datei bootstrap.py steht:

import transaction
from zope.app.intid.interfaces import IIntIds
from zope.component.interfaces import ISiteManager

from zope.app.appsetup.bootstrap import ensureUtility, getInformationFromEvent
from zope.app.intid import IntIds

def bootStrapSubscriber(event):
"""Subscriber to the IDataBaseOpenedEvent

Create local utilities if not yet present
"""
db, connection, root, root_folder = getInformationFromEvent(event)

# installiere als Beispiel ein UID-Utility
ensureUtility(root_folder, IIntIds, '',
IntIds, copy_to_zlog=False)
transaction.commit()
connection.close()

In diesem Beispiel wird ein "Utility für eindeutige ID" (Unique Id Utility) installiert, wenn es noch nicht vorhanden ist.

Category(s)
Zope 3
The URL to Trackback this entry is:
http://blog.gocept.com/aktionen-beim-hochfahren-des-zope-servers-ausfuehren/tbping