ソースを参照

Updated settings_manager.py: added convert() method

Vsevolod Levitan 1 年間 前
コミット
2d4db1ae1d
1 ファイル変更70 行追加0 行削除
  1. 70 0
      settings_manager.py

+ 70 - 0
settings_manager.py

@@ -0,0 +1,70 @@
+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