From 9eef80afb0fce126f75ebad94621de43a806dd7d Mon Sep 17 00:00:00 2001 From: Doug Blank Date: Sat, 13 Jun 2015 19:33:57 -0400 Subject: [PATCH] undoredo: changes to work with general backend --- gramps/gen/db/undoredo.py | 42 +++++++++++++++------------------------ 1 file changed, 16 insertions(+), 26 deletions(-) diff --git a/gramps/gen/db/undoredo.py b/gramps/gen/db/undoredo.py index bfcd652d6..7e8ca3091 100644 --- a/gramps/gen/db/undoredo.py +++ b/gramps/gen/db/undoredo.py @@ -130,7 +130,7 @@ class DbUndo(object): """ if self.db.readonly or self.undo_count == 0: return False - return self.__undo(update_history) + return self._undo(update_history) def redo(self, update_history=True): """ @@ -138,42 +138,32 @@ class DbUndo(object): """ if self.db.readonly or self.redo_count == 0: return False - return self.__redo(update_history) + return self._redo(update_history) def undo_reference(self, data, handle, db_map): """ Helper method to undo a reference map entry """ - try: - if data is None: - db_map.delete(handle, txn=self.txn) - else: - db_map.put(handle, data, txn=self.txn) - - except DBERRS as msg: - self.db._log_error() - raise DbError(msg) + if data is None: + db_map.delete(handle) + else: + db_map[handle] = data def undo_data(self, data, handle, db_map, emit, signal_root): """ Helper method to undo/redo the changes made """ - try: - if data is None: - emit(signal_root + '-delete', ([handle2internal(handle)],)) - db_map.delete(handle, txn=self.txn) + if data is None: + emit(signal_root + '-delete', ([handle],)) + db_map.delete(handle) + else: + ex_data = db_map[handle] + if ex_data: + signal = signal_root + '-update' else: - ex_data = db_map.get(handle, txn=self.txn) - if ex_data: - signal = signal_root + '-update' - else: - signal = signal_root + '-add' - db_map.put(handle, data, txn=self.txn) - emit(signal, ([handle2internal(handle)],)) - - except DBERRS as msg: - self.db._log_error() - raise DbError(msg) + signal = signal_root + '-add' + db_map[handle] = data + emit(signal, ([handle],)) undo_count = property(lambda self:len(self.undoq)) redo_count = property(lambda self:len(self.redoq))