diff --git a/djangoldp/conf/server_template/config.yml b/djangoldp/conf/server_template/config.yml index 6cf16a14ea468d5c801b4aa7195be7c34670d11c..5bb3ad69126f77a280468e3220401ce1723b0084 100644 --- a/djangoldp/conf/server_template/config.yml +++ b/djangoldp/conf/server_template/config.yml @@ -9,20 +9,7 @@ server: # Django required settings ALLOWED_HOSTS: - '*' - MIDDLEWARE: - - django.middleware.security.SecurityMiddleware - - django.contrib.sessions.middleware.SessionMiddleware - - django.middleware.common.CommonMiddleware - - django.middleware.csrf.CsrfViewMiddleware - - django.contrib.auth.middleware.AuthenticationMiddleware - - django.contrib.messages.middleware.MessageMiddleware - - django.middleware.clickjacking.XFrameOptionsMiddleware SECRET_KEY: "{{secret_key}}" - AUTH_PASSWORD_VALIDATORS: - - NAME: django.contrib.auth.password_validation.UserAttributeSimilarityValidator - - NAME: django.contrib.auth.password_validation.MinimumLengthValidator - - NAME: django.contrib.auth.password_validation.CommonPasswordValidator - - NAME: django.contrib.auth.password_validation.NumericPasswordValidator DATABASES: default: ENGINE: django.db.backends.sqlite3 diff --git a/djangoldp/conf/server_template/manage.py-tpl b/djangoldp/conf/server_template/manage.py-tpl index 2840eb3a57723cd8760a473f780bb802e23002f2..76a59b917de043a36995b77b2c8e6f36e42564e9 100755 --- a/djangoldp/conf/server_template/manage.py-tpl +++ b/djangoldp/conf/server_template/manage.py-tpl @@ -5,7 +5,6 @@ from djangoldp.conf import settings as ldpsettings if __name__ == "__main__": - os.environ.setdefault("DJANGOLDP_SETTINGS", "server.settings") ldpsettings.configure() try: diff --git a/djangoldp/conf/server_template/server/settings.py-tpl b/djangoldp/conf/server_template/server/settings.py-tpl deleted file mode 100644 index 0e50027637168d4fc05e076cb216906c11ad8761..0000000000000000000000000000000000000000 --- a/djangoldp/conf/server_template/server/settings.py-tpl +++ /dev/null @@ -1,2 +0,0 @@ -#vim: syntax=python -SECRET_KEY = 'FIXME' diff --git a/djangoldp/conf/server_template/server/wsgi.py-tpl b/djangoldp/conf/server_template/server/wsgi.py-tpl index 92767b7ae17deee4050415ceb6b4c915b4c90692..3876c6d74fed43b664191a22d23b0a3a16400f32 100644 --- a/djangoldp/conf/server_template/server/wsgi.py-tpl +++ b/djangoldp/conf/server_template/server/wsgi.py-tpl @@ -10,7 +10,8 @@ https://docs.djangoproject.com/en/1.11/howto/deployment/wsgi/ import os from django.core.wsgi import get_wsgi_application +from djangoldp.conf import settings as ldpsettings -os.environ.setdefault("DJANGO_SETTINGS_MODULE", "server.settings") +ldpsettings.configure() application = get_wsgi_application() diff --git a/djangoldp/conf/settings.py b/djangoldp/conf/settings.py index 3ce311e5b2c97c3dbb0066fa87369ad1cbd038f3..bc2db85e1de21538ea6cdaa0bfd470ab0e3a4866 100644 --- a/djangoldp/conf/settings.py +++ b/djangoldp/conf/settings.py @@ -1,6 +1,7 @@ import os import sys import yaml +from django.core.exceptions import ImproperlyConfigured from django.conf import settings as django_settings from . import global_settings @@ -14,12 +15,15 @@ def configure(): # ref: https://docs.djangoproject.com/fr/2.2/topics/settings/#custom-default-settings settings = LDPSettings('config.yml') - django_settings.configure(settings) + django_settings.configure(settings) # gives a LazySettings class LDPSettings(object): - def __init__(self, path, *args, **kwargs): + def __init__(self, path): + + if django_settings.configured: + raise ImproperlyConfigured('Settings have been configured already') self.path = path self._config = None @@ -35,28 +39,19 @@ class LDPSettings(object): return self._config - def __getattr__(self, name): - - """Look for the value in config and fallback on django defaults.""" - - try: - if not name.startswith('_') and name.isupper(): - return self.config['server'][name] - except KeyError: - try: - return getattr(global_settings, name) - except AttributeError: - # logger.info(f'The settings {name} is not accessible') - raise - @property def LDP_PACKAGES(self): + + """Returns the list of LDP packages configured.""" + pkg = self.config.get('ldppackages', []) return [] if pkg is None else pkg @property def INSTALLED_APPS(self): + """Returns the default installed apps and the LDP packages.""" + # get default apps apps = getattr(global_settings, 'INSTALLED_APPS') @@ -67,6 +62,8 @@ class LDPSettings(object): @property def MIDDLEWARE(self): + """Returns the default middlewares and the middlewares found in each LDP packages.""" + # get default middlewares middleware = getattr(global_settings, 'MIDDLEWARE') @@ -87,3 +84,18 @@ class LDPSettings(object): pass return middleware + + def __getattr__(self, name): + + """Look for the value in config and fallback on defaults.""" + + try: + if not name.startswith('_') and name.isupper(): + return self.config['server'][name] + except KeyError: + try: + return getattr(global_settings, name) + except AttributeError: + # logger.info(f'The settings {name} is not accessible') + raise +