ApplicationStatus.py 1.0 KB

1234567891011121314151617181920212223242526272829303132
  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. 'projects': {}
  20. })
  21. # subscribe to settings change to write it to file
  22. self['settings'].subscribe(self.__write_settings_to_file)
  23. def __write_settings_to_file(self, settings):
  24. with open(self.__path_to_settings_json, 'w') as settings_json:
  25. dump(settings, settings_json, indent=4)