Shane Hathaway wrote:
Bill Anderson wrote:
...
File /local/ZopeSites/TestBed/lib/python/AccessControl/Owned.py, line 152, in getOwner (Object: mailPasswordTemplate) ValueError: (see above)
By any chance does it say something to the effect of "Unpack tuple of incorrect size"? If so, I suggest you add a "print owner" statement just before line 152 of Owner.py and tell us what it says.
Hi Shane, I apologize for the delay, been working on other aspects of it. I added a print statement, and it prints []. line 52 reads: udb, oid = owner Which makes sense that it would barf, since the list is zero-length. Here is the code bit, with my print statement added in: ------------------------- def getOwner(self, info=0, aq_get=aq_get, None=None, UnownableOwner=UnownableOwner, ): """Get the owner If a true argument is provided, then only the owner path and id are returned. Otherwise, the owner object is returned. """ owner=aq_get(self, '_owner', None, 1) if owner is None: return owner if info: return owner if owner is UnownableOwner: return None print owner udb, oid = owner root=self.getPhysicalRoot() udb=root.unrestrictedTraverse(udb, None) if udb is None: return SpecialUsers.nobody owner = udb.getUserById(oid, None) if owner is None: return SpecialUsers.nobody return owner -------------------------- The following patch seems to alleviate the problem, but I dunno if it affects anything else: ================== --- lib/python/AccessControl/Owned.py Mon Sep 4 13:56:52 2000 +++ lib/python/AccessControl/Owned.py Mon Sep 4 13:55:40 2000 @@ -149,6 +149,8 @@ if owner is UnownableOwner: return None + if len(owner)==0: return None + udb, oid = owner root=self.getPhysicalRoot() udb=root.unrestrictedTraverse(udb, None) =================== Basically, I test for an empty list, and return None. -- Do not meddle in the affairs of sysadmins, for they are easy to annoy, and have the root password.