Mercurial > p > roundup > code
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,
