Kaydet (Commit) df7be7b5 authored tarafından Eray Özkural's avatar Eray Özkural

* smart constructor that falls back to read-only access when there

aren't sufficient permissions
üst 5fd8c62d
......@@ -30,17 +30,23 @@ class Error(pisi.Error):
class LockedDBShelf(shelve.DBShelf):
"""A simple wrapper to implement locking for bsddb's dbshelf"""
def __init__(self, dbname, flags=db.DB_CREATE, mode=0660,
def __init__(self, dbname, mode=0660,
filetype=db.DB_HASH, dbenv=None):
shelve.DBShelf.__init__(self, dbenv)
filename = os.path.join( pisi.context.config.db_dir(), dbname + '.bdb')
if os.access(os.path.dirname(filename), os.W_OK):
flags = 'w'
elif os.access(filename, os.R_OK):
flags = 'r'
else:
raise Error(_('Cannot attain read or write access to database %s') % dbname)
self.open(filename, dbname, filetype, flags, mode)
def __del__(self):
# superclass does something funky, we don't need that
pass
def open(self, filename, dbname, filetype, flags, mode):
def open(self, filename, dbname, filetype, flags=db.DB_CREATE, mode=0660):
self.filename = filename
self.closed = False
#print 'open', filename
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment