At 01:56 PM 5/25/00 +0400, Jephte CLAIN wrote:
When I don't wrap items like this, I get strange unauthorized errors. Only the super user can use the items. All the other users (Managers or not) can't.
In normal usage, one only accesses a rack from or in a Specialist. Specialists wrap the objects in the context of the specialist for you. I've just checked the code, however, and notice that Specialist.__bobo_traverse__ does this wrapping, not Specialist.getItem, so I will fix this in the next release. That way, calling getItem on the Specialist will ensure you have proper context. Patch follows... Index: Specialists.py =================================================================== RCS file: /u/idsuser/REPOSITORY/ZProducts/ZPatterns/Specialists.py,v retrieving revision 1.7 diff -u -r1.7 Specialists.py --- Specialists.py 2000/05/18 05:24:49 1.7 +++ Specialists.py 2000/05/25 12:57:35 @@ -1,7 +1,6 @@ from PlugIns import PlugInGroup from DataManagers import DataManager from Globals import HTMLFile, default__class_init__ - _marker = [] @@ -23,7 +22,7 @@ if ob is _marker: ob = self.getItem(name) if ob is not None: - return getattr(ob,'aq_base',ob).__of__(self) + return ob raise 'NotFound' return ob @@ -32,7 +31,8 @@ return self.retrieveItem(key) # XXX need DTML check? for rack in self.rackList: item = rack.__of__(self).getItem(key) - if item is not None: return item + if item is not None: + return getattr(item,'aq_base',item).__of__(self) def newItem(self, key=None): """Create a new item"""