diff roundup/backends/rdbms_common.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 96cd422532ef
line wrap: on
line diff
--- a/roundup/backends/rdbms_common.py	Mon Mar 17 04:48:41 2003 +0000
+++ b/roundup/backends/rdbms_common.py	Mon Mar 17 22:03:08 2003 +0000
@@ -1,4 +1,4 @@
-# $Id: rdbms_common.py,v 1.44 2003-03-16 22:24:55 kedder Exp $
+# $Id: rdbms_common.py,v 1.45 2003-03-17 22:03:08 kedder Exp $
 ''' Relational database (SQL) backend common code.
 
 Basics:
@@ -1486,8 +1486,18 @@
         if self.db.journaltag is None:
             raise DatabaseError, 'Database open read-only'
 
+        node = self.db.getnode(self.classname, nodeid)
+        # check if key property was overrided
+        key = self.getkey()
+        try:
+            id = self.lookup(node[key])
+        except KeyError:
+            pass
+        else:
+            raise KeyError, "Key property (%s) of retired node clashes with \
+                existing one (%s)" % (key, node[key])
+
         self.fireAuditors('restore', nodeid, None)
-
         # use the arg for __retired__ to cope with any odd database type
         # conversion (hello, sqlite)
         sql = 'update _%s set __retired__=%s where id=%s'%(self.classname,

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