Frage
Antwort
Der ObjectManager von Zope stellt hierzu die Methode restrictedTraverse() zur Verfügung.
Innerhalb eines PythonScripts wird dies wie folgt benützt:
obj = container.restrictedTraverse('/path/to/object')
Hinter einem Virtual Host Monster muss man gegebenenfalls noch das Wurzelverzeichnis ermitteln und im Pfad ergänzen. Im CMF steht dazu portal_url.getPortalPath() zur Verfügung.
Falls man keinen kompletten Pfad eines Objektes hat, sondern nur dessen ID hat (jedoch eine Referenz auf das Folderobjekt, in dem sich das Objekt befindet), so kann man folgendes benutzen:
obj = folder[id] oder obj = getattr(folder, id)
Bei Verwendung des getattr() Aufrufes ist zu Beachten, dass hier Acquisition Anwendung findet und ein Objekt mit Id id
acquiriert werden könnte. Ansonsten muß anstatt folder aq_base(folder) verwenden.