|
3 | 3 | import json |
4 | 4 | from ...lib import fusionAddInUtils as futil |
5 | 5 |
|
6 | | -persistDir = normpath(join(dirname(abspath(__file__)), '../../persist_defaults')) |
| 6 | +persistDir = normpath(join(dirname(abspath(__file__)), "../../persist_defaults")) |
7 | 7 |
|
8 | | -class Persistable(): |
9 | | - def __init__(self, persistFile: str, defaults: dict): |
10 | | - self.persistFile = join(persistDir, persistFile) |
11 | | - self._defaults = defaults |
12 | | - self.restoreDefaults() |
13 | | - |
14 | | - def saveDefaults(self): |
15 | | - try: |
16 | | - if not exists(persistDir): |
17 | | - mkdir(persistDir) |
18 | | - with open(self.persistFile, 'w') as persistFile: |
19 | | - data = {} |
20 | | - for key in self._defaults.keys(): |
21 | | - data[key] = getattr(self, key) |
22 | | - json.dump(data, persistFile, indent=2) |
23 | | - futil.log(f'saved defaults file {self.persistFile}') |
24 | | - return True |
25 | | - except: |
26 | | - futil.log(f'error when attempting to save defaults file {self.persistFile}') |
27 | | - return False |
28 | 8 |
|
29 | | - def __loadDefaults(self): |
30 | | - try: |
31 | | - data = False |
32 | | - if exists(self.persistFile): |
33 | | - with open(self.persistFile) as persistFile: |
34 | | - data = json.load(persistFile) |
35 | | - futil.log(f'loaded defaults file {self.persistFile}') |
36 | | - else: |
37 | | - futil.log(f'no defaults file to load {self.persistFile}') |
38 | | - return data |
39 | | - except: |
40 | | - futil.log(f'error when attempting to load defaults file {self.persistFile}') |
41 | | - return False |
| 9 | +class Persistable: |
| 10 | + def __init__(self, persistFile: str, defaults: dict): |
| 11 | + self.persistFile = join(persistDir, persistFile) |
| 12 | + self._defaults = defaults |
| 13 | + self.restoreDefaults() |
42 | 14 |
|
43 | | - def restoreDefaults(self): |
44 | | - data = self._defaults | (self.__loadDefaults() or {}) |
45 | | - for key, value in data.items(): |
46 | | - setattr(self, key, value) |
| 15 | + def saveDefaults(self): |
| 16 | + try: |
| 17 | + if not exists(persistDir): |
| 18 | + mkdir(persistDir) |
| 19 | + with open(self.persistFile, "w") as persistFile: |
| 20 | + data = {} |
| 21 | + for key in self._defaults.keys(): |
| 22 | + data[key] = getattr(self, key) |
| 23 | + json.dump(data, persistFile, indent=4) |
| 24 | + futil.log(f"saved defaults file {self.persistFile}") |
| 25 | + return True |
| 26 | + except Exception as err: |
| 27 | + futil.log(f"error when attempting to save defaults file {self.persistFile}: {err}") |
| 28 | + return False |
47 | 29 |
|
48 | | - # Ensure invalid values loaded from persistFile don't break things |
49 | | - def ensureDefaultKeyIsValid(self, keyName, obj): |
50 | | - key = getattr(self, keyName) |
51 | | - if not key in obj: |
52 | | - futil.log(f'Warning: {keyName} "{key}" invalid, restoring default value "{self._defaults[keyName]}"') |
53 | | - setattr(self, keyName, self._defaults[keyName]) |
| 30 | + def __loadDefaults(self): |
| 31 | + try: |
| 32 | + data = False |
| 33 | + if exists(self.persistFile): |
| 34 | + with open(self.persistFile) as persistFile: |
| 35 | + data = json.load(persistFile) |
| 36 | + futil.log(f"loaded defaults file {self.persistFile}") |
| 37 | + else: |
| 38 | + futil.log(f"no defaults file to load {self.persistFile}") |
| 39 | + return data |
| 40 | + except Exception as err: |
| 41 | + futil.log(f"error when attempting to load defaults file {self.persistFile}: {err}") |
| 42 | + return False |
54 | 43 |
|
55 | | - def eraseDefaults(self): |
56 | | - try: |
57 | | - if exists(self.persistFile): |
58 | | - remove(self.persistFile) |
59 | | - futil.log(f'erased defaults file {self.persistFile}') |
60 | | - else: |
61 | | - futil.log(f'no defaults file to erase {self.persistFile}') |
62 | | - return True |
63 | | - except: |
64 | | - futil.log(f'error when attempting to erase defaults file {self.persistFile}') |
65 | | - return False |
| 44 | + def restoreDefaults(self): |
| 45 | + data = self._defaults | (self.__loadDefaults() or {}) |
| 46 | + for key, value in data.items(): |
| 47 | + setattr(self, key, value) |
66 | 48 |
|
| 49 | + # Ensure invalid values loaded from persistFile don't break things |
| 50 | + def ensureDefaultKeyIsValid(self, keyName, obj): |
| 51 | + key = getattr(self, keyName) |
| 52 | + if key not in obj: |
| 53 | + futil.log(f'Warning: {keyName} "{key}" invalid, restoring default value "{self._defaults[keyName]}"') |
| 54 | + setattr(self, keyName, self._defaults[keyName]) |
| 55 | + |
| 56 | + def eraseDefaults(self): |
| 57 | + try: |
| 58 | + if exists(self.persistFile): |
| 59 | + remove(self.persistFile) |
| 60 | + futil.log(f"erased defaults file {self.persistFile}") |
| 61 | + else: |
| 62 | + futil.log(f"no defaults file to erase {self.persistFile}") |
| 63 | + return True |
| 64 | + except Exception as err: |
| 65 | + futil.log(f"error when attempting to erase defaults file {self.persistFile}: {err}") |
| 66 | + return False |
0 commit comments