Re: [Zope] problem with manage_permission
Jerome Alet writes:
self.manage_permission(permission_to_manage = "Access contents information" , roles = [ 'Manager', 'admin' ]) ..., but the manage_permission call gives me the following traceback:
Error Type: AttributeError Error Value: aq_acquire
Traceback (innermost last): .... File /usr/local/zope/lib/python/OFS/ObjectManager.py, line 173, in _subobject_permissions AttributeError: (see above)
Surprisingly, if I delete the manage_permission line, restart Zope, re-add an instance of MyClass (it works), then try to manually modify the permissions using the MyClass instance's security tab, then it works flawlessly. Inside the constructor code (i.e. inside "__init__"), objects do not yet have an acquisition context; they are not yet acquisition wrapped.
This means, they do not yet have any of the acquisition attributes: aq_acquire, aq_base, aq_self, aq_parent, aq_inner. When they are later accessed, they are not returned themselves. Rather, an acquisition wrapped version of the object is returned. The wrapper provides the attributes above. "manage_permissions" obviously requires obviously requires its "self" to be a wrapped object. If you have access to the correct acquisiton context (i.e. the folder, where you will instantiate the instance), you can wrap the object yourself: self.__of__(context).manage_permissions(....) Or you must postpone the "manage_permissions", until you can reaccess the object in the correct context. Dieter
participants (1)
-
Dieter Maurer