diff --git a/mayan/settings/base.py b/mayan/settings/base.py index 2945c29629..8f7ac02952 100644 --- a/mayan/settings/base.py +++ b/mayan/settings/base.py @@ -23,7 +23,11 @@ import environ import mayan -from .literals import DEFAULT_SECRET_KEY, SECRET_KEY_FILENAME, SYSTEM_DIR +from .literals import ( + CONFIGURATION_FILENAME, CONFIGURATION_LAST_GOOD_FILENAME, + DEFAULT_SECRET_KEY, SECRET_KEY_FILENAME, SYSTEM_DIR +) +from .utils import yaml_loads, read_configuration_file env = environ.Env() @@ -50,10 +54,12 @@ else: SECRET_KEY = DEFAULT_SECRET_KEY # SECURITY WARNING: don't run with debug turned on in production! -DEBUG = False +DEBUG = env.bool('MAYAN_DEBUG', default=False) -ALLOWED_HOSTS = env.list( - 'MAYAN_ALLOWED_HOSTS', default=['127.0.0.1', 'localhost', '[::1]'] +ALLOWED_HOSTS = yaml_loads( + env( + 'MAYAN_ALLOWED_HOSTS', default="['127.0.0.1', 'localhost', '[::1]']" + ) ) # Application definition @@ -347,47 +353,11 @@ else: 'NAME': os.path.join(MEDIA_ROOT, 'db.sqlite3'), } } -# ----- Debug ----- -DEBUG = env.bool('MAYAN_DEBUG', default=False) - - - -CONFIGURATION_FILENAME = '_settings.yml' CONFIGURATION_FILEPATH = os.path.join(MEDIA_ROOT, CONFIGURATION_FILENAME) - -CONFIGURATION_USER_FILENAME = 'config.yml' -CONFIGURATION_USER_FILEPATH = os.path.join( - MEDIA_ROOT, CONFIGURATION_USER_FILENAME -) - -CONFIGURATION_LAST_GOOD_FILENAME = '_settings_backup.yml' CONFIGURATION_LAST_GOOD_FILEPATH = os.path.join( MEDIA_ROOT, CONFIGURATION_LAST_GOOD_FILENAME ) - -def read_configuration_file(path): - try: - with open(CONFIGURATION_FILEPATH) as file_object: - file_object.seek(0, os.SEEK_END) - if file_object.tell(): - file_object.seek(0) - try: - globals().update(yaml.safe_load(file_object)) - except yaml.YAMLError as exception: - exit( - 'Error loading configuration file: {}; {}'.format( - CONFIGURATION_FILEPATH, exception - ) - ) - except IOError as exception: - if exception.errno == errno.ENOENT: - pass - else: - raise - - if not 'revertsettings' in sys.argv: - read_configuration_file(CONFIGURATION_FILEPATH) - read_configuration_file(CONFIGURATION_USER_FILEPATH) + globals().update(read_configuration_file(CONFIGURATION_FILEPATH)) diff --git a/mayan/settings/literals.py b/mayan/settings/literals.py index fd4ea1e65a..874921fb65 100644 --- a/mayan/settings/literals.py +++ b/mayan/settings/literals.py @@ -1,5 +1,10 @@ from __future__ import unicode_literals +import os + DEFAULT_SECRET_KEY = 'secret-key-missing!' SECRET_KEY_FILENAME = 'SECRET_KEY' SYSTEM_DIR = 'system' + +CONFIGURATION_FILENAME = 'config.yml' +CONFIGURATION_LAST_GOOD_FILENAME = 'config_backup.yml' diff --git a/mayan/settings/utils.py b/mayan/settings/utils.py new file mode 100644 index 0000000000..d859212a4a --- /dev/null +++ b/mayan/settings/utils.py @@ -0,0 +1,40 @@ +from __future__ import unicode_literals + +import errno +import os +import sys + +import yaml + + +def read_configuration_file(path): + try: + with open(path) as file_object: + file_object.seek(0, os.SEEK_END) + if file_object.tell(): + file_object.seek(0) + try: + return yaml.safe_load(file_object) + except yaml.YAMLError as exception: + exit( + 'Error loading configuration file: {}; {}'.format( + path, exception + ) + ) + except IOError as exception: + if exception.errno == errno.ENOENT: + pass + else: + raise + + +def yaml_loads(data, error_message=None): + if not error_message: + error_message = 'Error loading: {}; {}' + + try: + return yaml.safe_load(data) + except yaml.YAMLError as exception: + exit( + error_message.format(string, exception) + )