irgendwie muss ich wohl einen Denkfehler haben, oder ich bin in dem falschen glauben es verstanden zu haben...
Ich möchte es einem Objekt (folderish) (ich nenn es hier mal X) ermöglichen, außer auf seine eigenen Attribute auch noch auf weitere zugreifen zu können...
Diese "weiteren Attribute" liegen in Form von PythonScripts in einem Verzeichnis (Y) unterhalb von X (also nicht direkt in X).
Nun habe ich versucht dies mit __getattr__ zu erreichen.
Wenn ich nun versuche ein Script (Z) welches in Y liegt, über X aufzurufen, dann bekomme ich einen "Unauthorized Fehler".
Also z.B. bei folgendem Zugriff:
PythonScript 1: /test_call
=> context.X.getTest()
PythonScript 2: /X/abc/def/Y/getTest
=> return "ok"
Ich bin als Manager/Owner unterwegs und kann Z direkt, problemlos ausführen.
Code: Alles auswählen
class foo(AccessControl.Role.RoleManager, Persistent, Acquisition.Implicit, SimpleItem, PropertyManager):
...stuff...
def __getattr__(self, key):
""" look for extensions """
ext = self.extensions() # ext = Folder-Instanz
if key in ext.objectIds('Script (Python)'):
#return ext[key] <= geht nicht
return getattr(ext, key) <= geht auch nicht
if self.__dict__.has_key(key):
return self.__dict__[key]
else:
raise AttributeError, "Das Objekt hat kein Attribut Namens '%s.'" % (key)
...much more stuff...
Danke im Vorraus,
Grüße
Jens
___________
Python 2.1.3
Zope 2.5.1