Direkt zum Inhalt | Direkt zur Navigation

Benutzerspezifische Werkzeuge

Sie sind hier: Startseite / Tech-Blog / Plone: AutoRename für Dexterity content types

Plone: AutoRename für Dexterity content types

Im folgenden wird beschrieben wie man Dexterity Objekte in Plone, nach dem Erzeugen automatisch umbenennen kann.

Ein Weg dies zu erreichen, ist es einen EventHandler zu verwenden

Wir erzeugen eine Datei mit dem Namen "subscribers.py" in unserem Package.

from plone import api
from zope.container.interfaces import INameChooser
from .myobject import IMyObject

def autorename_my_object(obj, event):
    if not IMyObject.providedBy(obj):
        log.error("provides not IMyObject")
        return
    parent = event.newParent
    new_id = INameChooser(parent).chooseName(obj.my_object_name, obj)
    api.content.rename(obj=obj, new_id=new_id)

Der Parameter obj.my_object_name stellt dabei die Vorlage für den Namen dar. Dieser wird normalisiert und es wird sicher gestellt, dass er nicht mit vorhandenen Objekten kollidiert.

Dann registrieren wir den EvendHandler via zcml in der configure.zcml

<subscriber
  for="my.example.myobject.IMyObject
       zope.lifecycleevent.interfaces.IObjectAddedEvent"
  handler=".subscribers.autorename_my_object"
  />
abgelegt unter: ,