mirror of
				https://github.com/chibicitiberiu/ytsm.git
				synced 2024-02-24 05:43:31 +00:00 
			
		
		
		
	Improved settings.py to read the global settings from the .ini file.
This commit is contained in:
		@@ -12,35 +12,26 @@ from django.contrib.auth.models import User
 | 
			
		||||
from .models import UserSettings, Subscription
 | 
			
		||||
from .utils.extended_interpolation_with_env import ExtendedInterpolatorWithEnv
 | 
			
		||||
 | 
			
		||||
_CONFIG_DIR = os.path.join(dj_settings.BASE_DIR, 'config')
 | 
			
		||||
_LOG_FILE = 'log.log'
 | 
			
		||||
_LOG_PATH = os.path.join(_CONFIG_DIR, _LOG_FILE)
 | 
			
		||||
_LOG_FORMAT = '%(asctime)s|%(process)d|%(thread)d|%(name)s|%(filename)s|%(lineno)d|%(levelname)s|%(message)s'
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
class AppSettings(ConfigParser):
 | 
			
		||||
    _DEFAULT_INTERPOLATION = ExtendedInterpolatorWithEnv()
 | 
			
		||||
    __DEFAULTS_FILE = 'defaults.ini'
 | 
			
		||||
    __SETTINGS_FILE = 'config.ini'
 | 
			
		||||
 | 
			
		||||
    def __init__(self, *args, **kwargs):
 | 
			
		||||
        super().__init__(allow_no_value=True, *args, **kwargs)
 | 
			
		||||
        self.__defaults_path = os.path.join(_CONFIG_DIR, AppSettings.__DEFAULTS_FILE)
 | 
			
		||||
        self.__settings_path = os.path.join(_CONFIG_DIR, AppSettings.__SETTINGS_FILE)
 | 
			
		||||
 | 
			
		||||
    def initialize(self):
 | 
			
		||||
        self.read([self.__defaults_path, self.__settings_path])
 | 
			
		||||
        self.read([dj_settings.DEFAULTS_FILE, dj_settings.CONFIG_FILE])
 | 
			
		||||
 | 
			
		||||
    def save(self):
 | 
			
		||||
        if os.path.exists(self.__settings_path):
 | 
			
		||||
        if os.path.exists(dj_settings.CONFIG_FILE):
 | 
			
		||||
            # Create a backup
 | 
			
		||||
            copyfile(self.__settings_path, self.__settings_path + ".backup")
 | 
			
		||||
            copyfile(dj_settings.CONFIG_FILE, dj_settings.CONFIG_FILE + ".backup")
 | 
			
		||||
        else:
 | 
			
		||||
            # Ensure directory exists
 | 
			
		||||
            settings_dir = os.path.dirname(self.__settings_path)
 | 
			
		||||
            settings_dir = os.path.dirname(dj_settings.CONFIG_FILE)
 | 
			
		||||
            os.makedirs(settings_dir, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
        with open(self.__settings_path, 'w') as f:
 | 
			
		||||
        with open(dj_settings.CONFIG_FILE, 'w') as f:
 | 
			
		||||
            self.write(f)
 | 
			
		||||
 | 
			
		||||
    def __get_combined_dict(self, vars: Optional[Any], sub: Optional[Subscription], user: Optional[User]) -> ChainMap:
 | 
			
		||||
@@ -112,12 +103,10 @@ def initialize_app_config():
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
def __initialize_logger():
 | 
			
		||||
    log_level_str = settings.get('global', 'LogLevel', fallback='INFO')
 | 
			
		||||
    log_dir = os.path.dirname(dj_settings.LOG_FILE)
 | 
			
		||||
    os.makedirs(log_dir, exist_ok=True)
 | 
			
		||||
 | 
			
		||||
    try:
 | 
			
		||||
        log_level = getattr(logging, log_level_str)
 | 
			
		||||
        logging.basicConfig(filename=_LOG_PATH, level=log_level, format=_LOG_FORMAT)
 | 
			
		||||
 | 
			
		||||
    except AttributeError:
 | 
			
		||||
        logging.basicConfig(filename=_LOG_PATH, level=logging.INFO, format=_LOG_FORMAT)
 | 
			
		||||
        logging.warning('Invalid log level "%s" in config file.', log_level_str)
 | 
			
		||||
    logging.basicConfig(
 | 
			
		||||
        filename=dj_settings.LOG_FILE,
 | 
			
		||||
        level=dj_settings.LOG_LEVEL,
 | 
			
		||||
        format=dj_settings.LOG_FORMAT)
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user