Erik A.Dahl wrote:
Thanks for the suggestion but no joy here. Here is the full trace...
Python 2.3.3 (#1, Jan 27 2004, 09:17:28) [GCC 3.2 20020903 (Red Hat Linux 8.0 3.2-7)] on linux2 Type "help", "copyright", "credits" or "license" for more information.
import Zope app = Zope.app() app.testfolder <Folder instance at 410d9f50> tf = app.testfolder tf.getPhysicalRoot().manage_permission("View", ["Owner",]) Traceback (most recent call last): File "<stdin>", line 1, in ? File "/home/edahl/zope-2.7.0/lib/python/AccessControl/Role.py", line 164, in manage_permission for p in self.ac_inherited_permissions(1): File "/home/edahl/zope-2.7.0/lib/python/AccessControl/Role.py", line 82, in ac_inherited_permissions for p in self._subobject_permissions(): File "/home/edahl/zope-2.7.0/lib/python/OFS/ObjectManager.py", line 212, in _subobject_permissions return (Products.__ac_permissions__+ AttributeError: aq_acquire
'manage_permission' (really, the methods it calls) make the assumption (unwarranted in your case) that they are called on an acquisition-wrapped object. In your case, the root object is *not* wrapped, and therefore does not have the 'aq_acquire' method. Normally, when called via the publisher, the root object *is* wrapped (in a RequestContainer). A workaround would be to wrap the root first: zopectl> debug Starting debugger (the name "app" is bound to the top-level Zope object)
app <Application instance at 40dc1bf0> app.aq_chain # not wrapped Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: aq_chain app.manage_addFolder( 'testfolder' ) tf = app.testfolder pr = tf.getPhysicalRoot() pr.aq_acquire Traceback (most recent call last): File "<stdin>", line 1, in ? AttributeError: aq_acquire pr = pr.__of__(tf) pr.aq_chain [<Application instance at 40dc1bf0>, <Folder instance at 40e51d10>, <Application instance at 40dc1bf0>] pr.aq_acquire <CMethod object at 0x40dfac60> manage_permission("View", ["Owner"])
The real fix would be to rip out the use *anywhere* of 'self.aq_acquire'; the 'aq_aquire' function from Acquisition will always do the Right Thing (TM) if the object is not yet wrapped (the difference parallels using 'aq_base', 'aq_parent', 'aq_inner' as functions rather than methods). Tres. -- =============================================================== Tres Seaver tseaver@zope.com Zope Corporation "Zope Dealers" http://www.zope.com