7582: [Python2] Cannot remove a person having an event reference
This commit is contained in:
parent
a07f411548
commit
d702129296
@ -410,10 +410,8 @@ class DbUndoBSDDB(DbUndo):
|
|||||||
"""
|
"""
|
||||||
Open the undo/redo database
|
Open the undo/redo database
|
||||||
"""
|
"""
|
||||||
path = (self.path.encode(sys.getfilesystemencoding())
|
path = self.path
|
||||||
if (isinstance(self.path, UNITYPE) and win()
|
|
||||||
and sys.version_info[0] < 3)
|
|
||||||
else self.path)
|
|
||||||
self.undodb.open(path, db.DB_RECNO, db.DB_CREATE)
|
self.undodb.open(path, db.DB_RECNO, db.DB_CREATE)
|
||||||
|
|
||||||
def close(self):
|
def close(self):
|
||||||
|
@ -307,7 +307,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
dbmap = db.DB(self.env)
|
dbmap = db.DB(self.env)
|
||||||
dbmap.set_flags(flags)
|
dbmap.set_flags(flags)
|
||||||
|
|
||||||
fname = _encode(os.path.join(file_name, table_name + DBEXT))
|
fname = os.path.join(file_name, table_name + DBEXT)
|
||||||
|
|
||||||
if self.readonly:
|
if self.readonly:
|
||||||
dbmap.open(fname, table_name, dbtype, DBFLAGS_R)
|
dbmap.open(fname, table_name, dbtype, DBFLAGS_R)
|
||||||
@ -318,7 +318,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
def __open_shelf(self, file_name, table_name, dbtype=db.DB_HASH):
|
def __open_shelf(self, file_name, table_name, dbtype=db.DB_HASH):
|
||||||
dbmap = dbshelve.DBShelf(self.env)
|
dbmap = dbshelve.DBShelf(self.env)
|
||||||
|
|
||||||
fname = _encode(os.path.join(file_name, table_name + DBEXT))
|
fname = os.path.join(file_name, table_name + DBEXT)
|
||||||
|
|
||||||
if self.readonly:
|
if self.readonly:
|
||||||
dbmap.open(fname, table_name, dbtype, DBFLAGS_R)
|
dbmap.open(fname, table_name, dbtype, DBFLAGS_R)
|
||||||
@ -641,7 +641,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
env_name = name
|
env_name = name
|
||||||
|
|
||||||
try:
|
try:
|
||||||
self.env.open(_encode(env_name), env_flags)
|
self.env.open(env_name, env_flags)
|
||||||
except Exception as msg:
|
except Exception as msg:
|
||||||
_LOG.warning("Error opening db environment: " + str(msg))
|
_LOG.warning("Error opening db environment: " + str(msg))
|
||||||
try:
|
try:
|
||||||
@ -1131,14 +1131,16 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
raise DbError(_('An attempt is made to safe a reference key '
|
raise DbError(_('An attempt is made to safe a reference key '
|
||||||
'which is partly bytecode, this is not allowed.\n'
|
'which is partly bytecode, this is not allowed.\n'
|
||||||
'Key is %s') % str(key))
|
'Key is %s') % str(key))
|
||||||
key = str(key)
|
if sys.version_info[0] >= 3:
|
||||||
|
key= str(tuple(k for k in key))
|
||||||
|
else:
|
||||||
|
key = str(tuple(k.decode('utf-8') for k in key))
|
||||||
if isinstance(key, UNITYPE):
|
if isinstance(key, UNITYPE):
|
||||||
key = key.encode('utf-8')
|
key = key.encode('utf-8')
|
||||||
if not self.readonly:
|
if not self.readonly:
|
||||||
if not transaction.batch:
|
if not transaction.batch:
|
||||||
old_data = self.reference_map.get(key, txn=txn)
|
old_data = self.reference_map.get(key, txn=txn)
|
||||||
transaction.add(REFERENCE_KEY, TXNDEL, key, old_data, None)
|
transaction.add(REFERENCE_KEY, TXNDEL, key, old_data, None)
|
||||||
#transaction.reference_del.append(str(key))
|
|
||||||
self.reference_map.delete(key, txn=txn)
|
self.reference_map.delete(key, txn=txn)
|
||||||
|
|
||||||
def __add_reference(self, key, data, transaction, txn):
|
def __add_reference(self, key, data, transaction, txn):
|
||||||
@ -2217,7 +2219,7 @@ class DbBsddb(DbBsddbRead, DbWriteBase, UpdateCallback):
|
|||||||
# Environment name is now based on the filename
|
# Environment name is now based on the filename
|
||||||
env_name = name
|
env_name = name
|
||||||
|
|
||||||
self.env.open(_encode(env_name), env_flags)
|
self.env.open(env_name, env_flags)
|
||||||
self.env.txn_checkpoint()
|
self.env.txn_checkpoint()
|
||||||
|
|
||||||
self.metadata = self.__open_shelf(full_name, META)
|
self.metadata = self.__open_shelf(full_name, META)
|
||||||
|
Loading…
Reference in New Issue
Block a user