From 8bb886ad8b9dfe91e47eeda37d50ba8133e7e0dd Mon Sep 17 00:00:00 2001 From: plup <plup@plup.io> Date: Tue, 7 Apr 2020 15:23:28 +0200 Subject: [PATCH] feature: updated templates to use LDPSettings --- djangoldp/conf/server_template/config.yml | 13 ------ djangoldp/conf/server_template/manage.py-tpl | 1 - .../server_template/server/settings.py-tpl | 2 - .../conf/server_template/server/wsgi.py-tpl | 3 +- djangoldp/conf/settings.py | 44 ++++++++++++------- 5 files changed, 30 insertions(+), 33 deletions(-) delete mode 100644 djangoldp/conf/server_template/server/settings.py-tpl diff --git a/djangoldp/conf/server_template/config.yml b/djangoldp/conf/server_template/config.yml index 6cf16a14..5bb3ad69 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 2840eb3a..76a59b91 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 0e500276..00000000 --- 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 92767b7a..3876c6d7 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 3ce311e5..bc2db85e 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 + -- GitLab