12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- import os, json
- from settings import settings
- class settings_manager (object):
- __settings = None
- __filename = "settings.json"
- __data = {}
- def __new__(cls):
- if not hasattr(cls, "instance"):
- cls.instance = super(settings_manager, cls).__new__(cls)
- return cls.instance
- @property
- def data(self):
- return self.__data
-
- @property
- def settings(self):
- return self.__settings
-
- def convert(self):
- """
- Заполнить объект настроек
- Raises:
- Exception: Невозможно создать экземпляр класса настроек
- """
- if not self.__settings:
- self.__settings = settings()
- if not isinstance(self.__settings, settings):
- raise Exception("Невозможно создать экземпляр класса настроек")
- for key in self.__data.keys():
- setattr(self.__settings, key, self.__data[key])
- def open(self, filename):
- """
- Открыть файл с настройками
- Args:
- filename: Имя файла
- Raises:
- TypeError: Неверный тип аргумента
- ValueError: Неверная длина аргумента
- """
- if not isinstance(filename, str):
- raise TypeError("Неверный тип аргумента")
-
- if len(filename) == 0:
- raise ValueError("Неверная длина аргумента")
-
- self.__filename = filename.strip()
- return self.__open()
- def __open(self):
- """
- Открыть файл с настройками
- Raises:
- FileNotFoundError: Ошибка при открытии файла
- """
- file_path = os.path.split(__file__)
- settings_file = "%s/%s" % (file_path[0], self.__filename)
- if not os.path.exists(settings_file):
- raise FileNotFoundError("Невозможно загрузить файл настроек")
-
- with open(settings_file, "r") as read_file:
- self.__data = json.load(read_file)
-
- return True
|