[Zope] BUG with a patch
Jerome Alet
alet@unice.fr
Sat, 27 Jan 2001 10:25:38 +0100
--wac7ysb48OaltWcw
Content-Type: text/plain; charset=us-ascii
Hi,
the way the manage_renameObjects() method was coded made it impossible
to exchange two objects ids in one pass, e.g. rename Obj1 to Obj2 and
Obj2 to Obj1.
The attached patch seems to correct this problem, however a better
temporary id construction method is needed.
I've tried to submit it to the colector but I don't know if it succeeded.
hoping this will help
Jerome Alet
--wac7ysb48OaltWcw
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="CopySupport-2.3.0-final.patch"
--- CopySupport.py.2.3.0-final Sat Jan 27 10:04:42 2001
+++ CopySupport.py Sat Jan 27 10:10:48 2001
@@ -280,9 +280,20 @@
"""Rename several sub-objects"""
if len(ids) != len(new_ids):
raise 'BadRequst','Please rename each listed object.'
+ conflicts = []
for i in range(len(ids)):
if ids[i] != new_ids[i]:
+ if new_ids[i] not in ids : # may a conflict occur ?
self.manage_renameObject(ids[i], new_ids[i], REQUEST)
+ else :
+ tempo = ".temporary_%i_" % i
+ self.manage_renameObject(ids[i], tempo)
+ conflicts.append((tempo, new_ids[i]))
+
+ # now we rename conflictuous objects
+ for (old, new) in conflicts :
+ self.manage_renameObject(old, new)
+
if REQUEST is not None:
return self.manage_main(self, REQUEST, update_menu=1)
return None
--wac7ysb48OaltWcw--