|  | @@ -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
 |