1
0

json_db: exempt keystore from StoredDict conversion

The keystore logic would need to be significantly changed to nicely
interoperate with StoredDict/json_db logic.
(just see KeyStore.__init__() and KeyStore.dump())
For now we exempt the keystore from the recursive StoredDict conversion, as
it is a smaller change that is also easier to review for correctness.

fixes #6066
fixes #6401

also reverts 2d3c2eeea9 (which was an even hackier workaround for #6066)
This commit is contained in:
SomberNight
2020-09-04 16:11:01 +02:00
parent 8dc3fadd13
commit a7199696d3
5 changed files with 14 additions and 4 deletions

View File

@@ -103,7 +103,8 @@ class StoredDict(dict):
elif isinstance(v, dict):
if self.db:
v = self.db._convert_dict(self.path, key, v)
v = StoredDict(v, self.db, self.path + [key])
if not self.db or self.db._should_convert_to_stored_dict(key):
v = StoredDict(v, self.db, self.path + [key])
# convert_value is called depth-first
if isinstance(v, dict) or isinstance(v, str):
if self.db:
@@ -194,3 +195,6 @@ class JsonDB(Logger):
@locked
def dump(self):
return json.dumps(self.data, indent=4, sort_keys=True, cls=JsonDBJsonEncoder)
def _should_convert_to_stored_dict(self, key) -> bool:
return True