prevent file corruption during json.dump
This commit is contained in:
parent
496e771e17
commit
3c0a26eaa8
@ -93,8 +93,10 @@ class Bookmarks(object):
|
|||||||
return "{data_directory}/bookmarks.json".format(data_directory=coreConfig.get_data_directory())
|
return "{data_directory}/bookmarks.json".format(data_directory=coreConfig.get_data_directory())
|
||||||
|
|
||||||
def store(self):
|
def store(self):
|
||||||
|
# don't write directly to file to avoid corruption on exceptions
|
||||||
|
jsonContent = json.dumps([b.__dict__() for b in self.bookmarks], indent=4)
|
||||||
with open(Bookmarks._getBookmarksFile(), "w") as file:
|
with open(Bookmarks._getBookmarksFile(), "w") as file:
|
||||||
json.dump([b.__dict__() for b in self.bookmarks], file, indent=4)
|
file.write(jsonContent)
|
||||||
self.file_modified = self._getFileModifiedTimestamp()
|
self.file_modified = self._getFileModifiedTimestamp()
|
||||||
|
|
||||||
def addBookmark(self, bookmark: Bookmark):
|
def addBookmark(self, bookmark: Bookmark):
|
||||||
|
@ -21,5 +21,7 @@ class DynamicConfig(PropertyLayer):
|
|||||||
return "{data_directory}/settings.json".format(data_directory=coreConfig.get_data_directory())
|
return "{data_directory}/settings.json".format(data_directory=coreConfig.get_data_directory())
|
||||||
|
|
||||||
def store(self):
|
def store(self):
|
||||||
|
# don't write directly to file to avoid corruption on exceptions
|
||||||
|
jsonContent = json.dumps(self.__dict__(), indent=4)
|
||||||
with open(DynamicConfig._getSettingsFile(), "w") as file:
|
with open(DynamicConfig._getSettingsFile(), "w") as file:
|
||||||
json.dump(self.__dict__(), file, indent=4)
|
file.write(jsonContent)
|
||||||
|
@ -185,8 +185,10 @@ class UserList(object):
|
|||||||
usersFile = self._getUsersFile()
|
usersFile = self._getUsersFile()
|
||||||
users = [u.toJson() for u in self.values()]
|
users = [u.toJson() for u in self.values()]
|
||||||
try:
|
try:
|
||||||
|
# don't write directly to file to avoid corruption on exceptions
|
||||||
|
jsonContent = json.dumps(users, indent=4)
|
||||||
with open(usersFile, "w") as f:
|
with open(usersFile, "w") as f:
|
||||||
json.dump(users, f, indent=4)
|
f.write(jsonContent)
|
||||||
except Exception:
|
except Exception:
|
||||||
logger.exception("error while writing users file %s", usersFile)
|
logger.exception("error while writing users file %s", usersFile)
|
||||||
self.refresh()
|
self.refresh()
|
||||||
|
Loading…
Reference in New Issue
Block a user