6
0

ApplicationStatus.py 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. from json import load, dump
  2. from os.path import exists
  3. from pycs.observable import ObservableDict
  4. class ApplicationStatus(ObservableDict):
  5. def __init__(self, path_to_settings_json=None, settings=None):
  6. # load settings if file exists
  7. self.__path_to_settings_json = path_to_settings_json
  8. if settings is not None:
  9. settings = settings
  10. elif path_to_settings_json is not None and exists(path_to_settings_json):
  11. with open(path_to_settings_json, 'r') as settings_json:
  12. settings = load(settings_json)
  13. else:
  14. settings = {}
  15. # initialize data structure
  16. super().__init__({
  17. 'settings': settings,
  18. 'models': {},
  19. 'labels': {},
  20. 'projects': {}
  21. })
  22. # subscribe to settings change to write it to file
  23. self['settings'].subscribe(self.__write_settings_to_file)
  24. def __write_settings_to_file(self, settings, keys):
  25. with open(self.__path_to_settings_json, 'w') as settings_json:
  26. dump(settings, settings_json, indent=4)