import os.path from constants import Constants import json class Settings: """Dynamically save and load the settings of the application.""" def __init__(self): self._dct = {} def load(self): """Load the setiings.json file.""" if not os.path.exists(Constants.SETTINGS_FILE): return try: with open(Constants.SETTINGS_FILE, 'r') as settings_file: self._dct = json.load(settings_file) except Exception: pass # Invalid file. def save(self, **kwargs): """Save the settings.json file. Also update the current settings specified in kwargs. New settings can be dynamically added via this method.""" for k, v in kwargs.items(): self._dct[k] = v with open(Constants.SETTINGS_FILE, mode='w') as settings_file: json.dump( self._dct, settings_file, sort_keys=True, indent=4 ) def __getattr__(self, attr): """Return the corresponding setting. Return None if there is no such setting yet.""" return self._dct.get(attr, None)