undoredo: changes to work with general backend

This commit is contained in:
Doug Blank 2015-06-13 19:33:57 -04:00
parent edae9faaec
commit 9eef80afb0

View File

@ -130,7 +130,7 @@ class DbUndo(object):
""" """
if self.db.readonly or self.undo_count == 0: if self.db.readonly or self.undo_count == 0:
return False return False
return self.__undo(update_history) return self._undo(update_history)
def redo(self, update_history=True): def redo(self, update_history=True):
""" """
@ -138,42 +138,32 @@ class DbUndo(object):
""" """
if self.db.readonly or self.redo_count == 0: if self.db.readonly or self.redo_count == 0:
return False return False
return self.__redo(update_history) return self._redo(update_history)
def undo_reference(self, data, handle, db_map): def undo_reference(self, data, handle, db_map):
""" """
Helper method to undo a reference map entry Helper method to undo a reference map entry
""" """
try:
if data is None: if data is None:
db_map.delete(handle, txn=self.txn) db_map.delete(handle)
else: else:
db_map.put(handle, data, txn=self.txn) db_map[handle] = data
except DBERRS as msg:
self.db._log_error()
raise DbError(msg)
def undo_data(self, data, handle, db_map, emit, signal_root): def undo_data(self, data, handle, db_map, emit, signal_root):
""" """
Helper method to undo/redo the changes made Helper method to undo/redo the changes made
""" """
try:
if data is None: if data is None:
emit(signal_root + '-delete', ([handle2internal(handle)],)) emit(signal_root + '-delete', ([handle],))
db_map.delete(handle, txn=self.txn) db_map.delete(handle)
else: else:
ex_data = db_map.get(handle, txn=self.txn) ex_data = db_map[handle]
if ex_data: if ex_data:
signal = signal_root + '-update' signal = signal_root + '-update'
else: else:
signal = signal_root + '-add' signal = signal_root + '-add'
db_map.put(handle, data, txn=self.txn) db_map[handle] = data
emit(signal, ([handle2internal(handle)],)) emit(signal, ([handle],))
except DBERRS as msg:
self.db._log_error()
raise DbError(msg)
undo_count = property(lambda self:len(self.undoq)) undo_count = property(lambda self:len(self.undoq))
redo_count = property(lambda self:len(self.redoq)) redo_count = property(lambda self:len(self.redoq))