diff roundup/backends/back_metakit.py @ 1523:63aa7be52d2c

checked to make sure that the restored item doesn't clash... ...with a new item using the same key value
author Andrey Lebedev <kedder@users.sourceforge.net>
date Mon, 17 Mar 2003 22:03:08 +0000
parents 6fede2aa6a12
children cf5a5357a7ea
line wrap: on
line diff
--- a/roundup/backends/back_metakit.py	Mon Mar 17 04:48:41 2003 +0000
+++ b/roundup/backends/back_metakit.py	Mon Mar 17 22:03:08 2003 +0000
@@ -1,4 +1,4 @@
-# $Id: back_metakit.py,v 1.42 2003-03-16 22:24:54 kedder Exp $
+# $Id: back_metakit.py,v 1.43 2003-03-17 22:03:04 kedder Exp $
 '''
    Metakit backend for Roundup, originally by Gordon McMillan.
 
@@ -684,6 +684,18 @@
         '''
         if self.db.journaltag is None:
             raise hyperdb.DatabaseError, 'Database open read-only'
+
+        # check if key property was overrided
+        key = self.getkey()
+        keyvalue = self.get(nodeid, key)
+        try:
+            id = self.lookup(keyvalue)
+        except KeyError:
+            pass
+        else:
+            raise KeyError, "Key property (%s) of retired node clashes with \
+                existing one (%s)" % (key, keyvalue)
+        # Now we can safely restore node
         self.fireAuditors('restore', nodeid, None)
         view = self.getview(1)
         ndx = view.find(id=int(nodeid))

Roundup Issue Tracker: http://roundup-tracker.org/