Code

fix up some pre-Python2.6 compatibility issues in the *dbm interface
[roundup.git] / roundup / backends / back_anydbm.py
index baa389b4a5bf2efc66c82a692548a8ce471174b9..0bbba4c4dafacb6c032c5b698a1cdc7804cc7442 100644 (file)
@@ -24,7 +24,7 @@ __docformat__ = 'restructuredtext'
 
 import os, marshal, re, weakref, string, copy, time, shutil, logging
 
-from roundup.anypy.dbm_ import anydbm, whichdb
+from roundup.anypy.dbm_ import anydbm, whichdb, key_in
 
 from roundup import hyperdb, date, password, roundupdb, security, support
 from roundup.support import reversed
@@ -248,7 +248,7 @@ class Database(FileStorage, hyperdb.Database, roundupdb.Database):
         """
         # open the ids DB - create if if doesn't exist
         db = self.opendb('_ids', 'c')
-        if classname in db:
+        if key_in(db, classname):
             newid = db[classname] = str(int(db[classname]) + 1)
         else:
             # the count() bit is transitional - older dbs won't start at 1
@@ -322,7 +322,7 @@ class Database(FileStorage, hyperdb.Database, roundupdb.Database):
         # get from the database and save in the cache
         if db is None:
             db = self.getclassdb(classname)
-        if nodeid not in db:
+        if not key_in(db, nodeid):
             raise IndexError("no such %s %s"%(classname, nodeid))
 
         # check the uncommitted, destroyed nodes
@@ -435,7 +435,7 @@ class Database(FileStorage, hyperdb.Database, roundupdb.Database):
         # not in the cache - check the database
         if db is None:
             db = self.getclassdb(classname)
-        return nodeid in db
+        return key_in(db, nodeid)
 
     def countnodes(self, classname, db=None):
         count = 0
@@ -552,7 +552,7 @@ class Database(FileStorage, hyperdb.Database, roundupdb.Database):
             db_type = self.determine_db_type(path)
             db = self.opendb(db_name, 'w')
 
-            for key in db:
+            for key in db.keys():
                 # get the journal for this db entry
                 journal = marshal.loads(db[key])
                 l = []
@@ -679,7 +679,7 @@ class Database(FileStorage, hyperdb.Database, roundupdb.Database):
         db = self.getCachedJournalDB(classname)
 
         # now insert the journal entry
-        if nodeid in db:
+        if key_in(db, nodeid):
             # append to existing
             s = db[nodeid]
             l = marshal.loads(s)
@@ -704,12 +704,12 @@ class Database(FileStorage, hyperdb.Database, roundupdb.Database):
     def doDestroyNode(self, classname, nodeid):
         # delete from the class database
         db = self.getCachedClassDB(classname)
-        if nodeid in db:
+        if key_in(db, nodeid):
             del db[nodeid]
 
         # delete from the database
         db = self.getCachedJournalDB(classname)
-        if nodeid in db:
+        if key_in(db, nodeid):
             del db[nodeid]
 
     def rollback(self):
@@ -1530,12 +1530,12 @@ class Class(hyperdb.Class):
             db = self.db.getclassdb(self.classname)
             must_close = True
         try:
-            res.extend(db)
+            res.extend(db.keys())
 
             # remove the uncommitted, destroyed nodes
             if self.classname in self.db.destroyednodes:
                 for nodeid in self.db.destroyednodes[self.classname]:
-                    if nodeid in db:
+                    if key_in(db, nodeid):
                         res.remove(nodeid)
 
             # check retired flag