From 2798d8a6768ba9ca9e2e96f32463025c78aaae27 Mon Sep 17 00:00:00 2001 From: Mykola Grymalyuk Date: Sat, 11 Jun 2022 20:22:39 -0600 Subject: [PATCH] global_settings.py: add error handling for `/Users/Shared` write --- resources/global_settings.py | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/resources/global_settings.py b/resources/global_settings.py index 2b1167799..4679293b8 100644 --- a/resources/global_settings.py +++ b/resources/global_settings.py @@ -21,15 +21,17 @@ class global_settings: plistlib.dump({"Developed by Dortania": True,}, Path(self.global_settings_plist).open("wb")) def read_property(self, property_name): - plist = plistlib.load(Path(self.global_settings_plist).open("rb")) - if property_name in plist: - return plist[property_name] + if Path(self.global_settings_plist).exists(): + plist = plistlib.load(Path(self.global_settings_plist).open("rb")) + if property_name in plist: + return plist[property_name] return None def write_property(self, property_name, property_value): - plist = plistlib.load(Path(self.global_settings_plist).open("rb")) - plist[property_name] = property_value - plistlib.dump(plist, Path(self.global_settings_plist).open("wb")) + if Path(self.global_settings_plist).exists(): + plist = plistlib.load(Path(self.global_settings_plist).open("rb")) + plist[property_name] = property_value + plistlib.dump(plist, Path(self.global_settings_plist).open("wb")) def convert_defaults_to_global_settings(self): @@ -41,7 +43,11 @@ class global_settings: # merge defaults with global settings global_settings_plist = plistlib.load(Path(self.global_settings_plist).open("rb")) global_settings_plist.update(defaults_plist) - plistlib.dump(global_settings_plist, Path(self.global_settings_plist).open("wb")) + try: + plistlib.dump(global_settings_plist, Path(self.global_settings_plist).open("wb")) + except PermissionError: + print("- Permission error: Unable to write to global settings file") + return # delete defaults plist Path(defaults_path).unlink() \ No newline at end of file