Another implementation of undo/redo
This commit is contained in:
@@ -98,10 +98,10 @@ class SettingsManager:
|
||||
user_id, user_email = self._get_user(session)
|
||||
return self._db_engine.save(user_id, user_email, entry, obj)
|
||||
|
||||
def load(self, session: dict, entry: str, default=NoDefault):
|
||||
def load(self, session: dict, entry: str, digest=None, default=NoDefault):
|
||||
user_id, _ = self._get_user(session)
|
||||
try:
|
||||
return self._db_engine.load(user_id, entry)
|
||||
return self._db_engine.load(user_id, entry, digest)
|
||||
except DbException:
|
||||
return default
|
||||
|
||||
@@ -128,6 +128,14 @@ class SettingsManager:
|
||||
|
||||
return self._db_engine.exists(user_id, entry)
|
||||
|
||||
def get_digest(self, session: dict, entry: str):
|
||||
user_id, _ = self._get_user(session)
|
||||
return self._db_engine.get_digest(user_id, entry)
|
||||
|
||||
def history(self, session, entry, digest=None, max_items=1000):
|
||||
user_id, _ = self._get_user(session)
|
||||
return self._db_engine.history(user_id, entry, digest, max_items)
|
||||
|
||||
def get_db_engine(self):
|
||||
return self._db_engine
|
||||
|
||||
@@ -177,7 +185,7 @@ class GenericDbManager:
|
||||
if key.startswith("_"):
|
||||
super().__setattr__(key, value)
|
||||
|
||||
settings = self._settings_manager.load(self._session, self._obj_entry, self._obj_type())
|
||||
settings = self._settings_manager.load(self._session, self._obj_entry, default=self._obj_type())
|
||||
if not (hasattr(settings, key)):
|
||||
raise AttributeError(f"Settings '{self._obj_entry}' has no attribute '{key}'.")
|
||||
|
||||
@@ -188,7 +196,7 @@ class GenericDbManager:
|
||||
if item.startswith("_"):
|
||||
return super().__getattribute__(item)
|
||||
|
||||
settings = self._settings_manager.load(self._session, self._obj_entry, self._obj_type())
|
||||
settings = self._settings_manager.load(self._session, self._obj_entry, default=self._obj_type())
|
||||
if not (hasattr(settings, item)):
|
||||
raise AttributeError(f"Settings '{self._obj_entry}' has no attribute '{item}'.")
|
||||
|
||||
@@ -250,7 +258,7 @@ class NestedSettingsManager:
|
||||
self._settings_manager.save(self._session, self._obj_entry, settings)
|
||||
|
||||
def _get_settings_and_object(self):
|
||||
settings = self._settings_manager.load(self._session, self._obj_entry, self._obj_type())
|
||||
settings = self._settings_manager.load(self._session, self._obj_entry, default=self._obj_type())
|
||||
if not hasattr(settings, self._obj_attribute):
|
||||
raise AttributeError(f"Settings '{self._obj_entry}' has no attribute '{self._obj_attribute}'.")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user