Hi Phil, Yup.. I realized it when I could *list* all the ids, but not delete them. ;-) I'm wondering if it might be better to change the implementation of getPersistentItemIDs to return a plain list? This would also help avoid permission errors that folks run in to when trying to use it in dtml. I realize that listifying takes time, but you probably wouldn't call it if you had a very large number of items in the rack (you'd maybe query a catalog or something else.. ) -steve On Wednesday, May 23, 2001, at 11:22 AM, Phillip J. Eby wrote:
At 05:48 PM 5/23/01 +0200, Christian Scholz wrote:
Hi!
It works.. partially. For some reason it looks like getPersistentItemIDs does not always return a *complete* list. I need to run this method several times to completely exhaust the Rack's storage. Thoughts? The only way I ever create Track objects is via a different method that is only accessed once (a long time ago!)
Well, I experiences something similar when changing a Racks storage from persistent to non-persistent. The included objects are marked as orphaned then and should be deleted with the Clear-Button. This also works, but only the half of them gets deleted every time I click on that button.. So I also have to press it several times.. Sounds like the same problem..
I just thought of how this happens... if you delete an object from the Rack, it's being removed from the virtual list of keys your loop is traversing. So as you iterate from 0..n, and you delete items from the rack, they are removed from the keys list too, the list shortens, and every other item in the list is skipped! This is why you get half the list every time.
The fix would probably be:
foo = getPersisentItemIDs()
while foo: foo[0].manage_delete()
I should probably do this in ZPatterns too. I'm working on upgrading it for 2.3.2 right now anyway.