Browse Source

Change settings layout

Retro-compatible with older layout (the default settings module is still
coin.settings).

Makes it possible to have alternate settings files ignoring the
settings_local.py
Jocelyn Delalande 8 years ago
parent
commit
01caad30bd
2 changed files with 255 additions and 251 deletions
  1. 1 251
      coin/settings.py
  2. 254 0
      coin/settings_base.py

+ 1 - 251
coin/settings.py

@@ -1,257 +1,7 @@
 # -*- coding: utf-8 -*-
-from __future__ import unicode_literals
 
-import os
-import ldap
+from settings_base import *
 
-# Django settings for coin project.
-
-# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
-BASE_DIR = os.path.dirname(os.path.dirname(__file__))
-
-PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
-DEBUG = TEMPLATE_DEBUG = True
-
-ADMINS = (
-    # ('Your Name', 'your_email@example.com'),
-)
-
-MANAGERS = ADMINS
-
-DATABASES = {
-    # Base de donnée du SI
-    'default': {
-        'ENGINE': 'django.db.backends.sqlite3',
-        'NAME': 'coin.sqlite3',
-        'USER': '', # Not needed for SQLite
-        'PASSWORD': '', # Not needed for SQLite
-        'HOST': '',  # Empty for localhost through domain sockets
-        'PORT': '',  # Empty for default
-    },
-}
-
-# Hosts/domain names that are valid for this site; required if DEBUG is False
-# See https://docs.djangoproject.com/en/1.7/ref/settings/#allowed-hosts
-ALLOWED_HOSTS = []
-
-# Local time zone for this installation. Choices can be found here:
-# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
-# although not all choices may be available on all operating systems.
-# In a Windows environment this must be set to your system time zone.
-TIME_ZONE = 'Europe/Paris'
-
-# Language code for this installation. All choices can be found here:
-# http://www.i18nguy.com/unicode/language-identifiers.html
-LANGUAGE_CODE = 'fr-fr'
-
-SITE_ID = 1
-
-# If you set this to False, Django will make some optimizations so as not
-# to load the internationalization machinery.
-USE_I18N = True
-
-# If you set this to False, Django will not format dates, numbers and
-# calendars according to the current locale.
-USE_L10N = True
-
-# If you set this to False, Django will not use timezone-aware datetimes.
-USE_TZ = True
-
-# Default URL for login and logout
-LOGIN_URL = '/members/login'
-LOGIN_REDIRECT_URL = '/members'
-LOGOUT_URL = '/members/logout'
-
-# Absolute filesystem path to the directory that will hold user-uploaded files.
-# Example: "/var/www/example.com/media/"
-MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
-
-# URL that handles the media served from MEDIA_ROOT. Make sure to use a
-# trailing slash.
-# Examples: "http://example.com/media/", "http://media.example.com/"
-MEDIA_URL = '/media/'
-
-# Absolute path to the directory static files should be collected to.
-# Don't put anything in this directory yourself; store your static files
-# in apps' "static/" subdirectories and in STATICFILES_DIRS.
-# Example: "/var/www/example.com/static/"
-STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
-
-# URL prefix for static files.
-# Example: "http://example.com/static/", "http://static.example.com/"
-STATIC_URL = '/static/'
-
-# Additional locations of static files
-STATICFILES_DIRS = (
-    # Put strings here, like "/home/html/static" or "C:/www/django/static".
-    # Always use forward slashes, even on Windows.
-    # Don't forget to use absolute paths, not relative paths.
-)
-
-# List of finder classes that know how to find static files in
-# various locations.
-STATICFILES_FINDERS = (
-    'django.contrib.staticfiles.finders.FileSystemFinder',
-    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
-    #'django.contrib.staticfiles.finders.DefaultStorageFinder',
-)
-
-# Location of private files. (Like invoices)
-# In production, this location should not be publicly accessible through
-# the web server
-PRIVATE_FILES_ROOT = os.path.join(BASE_DIR, 'smedia/')
-
-# Backend to use when sending private files to client
-# In production, must be sendfile.backends.xsendfile with Apache xsend file mod
-# Or failing xsendfile, use : sendfile.backends.simple
-# https://github.com/johnsensible/django-sendfile
-SENDFILE_BACKEND = 'sendfile.backends.development'
-
-# Make this unique, and don't share it with anybody.
-SECRET_KEY = '!qy_)gao6q)57#mz1s-d$5^+dp1nt=lk1d19&9bb3co37vn)!3'
-
-# List of callables that know how to import templates from various sources.
-TEMPLATE_LOADERS = (
-    'django.template.loaders.filesystem.Loader',
-    'django.template.loaders.app_directories.Loader',
-    #'django.template.loaders.eggs.Loader',
-)
-
-MIDDLEWARE_CLASSES = (
-    'django.middleware.common.CommonMiddleware',
-    'django.contrib.sessions.middleware.SessionMiddleware',
-    'django.middleware.csrf.CsrfViewMiddleware',
-    'django.contrib.auth.middleware.AuthenticationMiddleware',
-    'django.contrib.messages.middleware.MessageMiddleware',
-    # Uncomment the next line for simple clickjacking protection:
-    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
-)
-
-ROOT_URLCONF = 'coin.urls'
-
-# Python dotted path to the WSGI application used by Django's runserver.
-WSGI_APPLICATION = 'coin.wsgi.application'
-
-TEMPLATE_DIRS = (
-    # Only absolute paths, always forward slashes
-    os.path.join(PROJECT_PATH, 'templates/'),
-)
-
-EXTRA_TEMPLATE_DIRS = tuple()
-
-INSTALLED_APPS = (
-    'django.contrib.auth',
-    'django.contrib.contenttypes',
-    'django.contrib.sessions',
-    'django.contrib.sites',
-    'ldapdb',  # LDAP as database backend
-    'django.contrib.messages',
-    'django.contrib.staticfiles',
-    # Uncomment the next line to enable the admin:
-    'django.contrib.admin',
-    # Uncomment the next line to enable admin documentation:
-    #'django.contrib.admindocs',
-    'polymorphic',
-    # 'south',
-    'autocomplete_light', #Automagic autocomplete foreingkey form component
-    'activelink', #Detect if a link match actual page
-    'coin',
-    'coin.members',
-    'coin.offers',
-    'coin.billing',
-    'coin.resources',
-    'coin.reverse_dns',
-    'coin.configuration',
-    'coin.isp_database',
-)
-
-EXTRA_INSTALLED_APPS = tuple()
-
-# A sample logging configuration. The only tangible logging
-# performed by this configuration is to send an email to
-# the site admins on every HTTP 500 error when DEBUG=False.
-# See http://docs.djangoproject.com/en/dev/topics/logging for
-# more details on how to customize your logging configuration.
-LOGGING = {
-    'version': 1,
-    'disable_existing_loggers': False,
-    'filters': {
-        'require_debug_false': {
-            '()': 'django.utils.log.RequireDebugFalse'
-        }
-    },
-    'handlers': {
-        'mail_admins': {
-            'level': 'ERROR',
-            'filters': ['require_debug_false'],
-            'class': 'django.utils.log.AdminEmailHandler'
-        }
-    },
-    'loggers': {
-        'django.request': {
-            'handlers': ['mail_admins'],
-            'level': 'ERROR',
-            'propagate': True,
-        },
-    }
-}
-
-TEMPLATE_CONTEXT_PROCESSORS = (
-    "django.contrib.auth.context_processors.auth",
-    "django.core.context_processors.debug",
-    "django.core.context_processors.i18n",
-    "django.core.context_processors.media",
-    "django.core.context_processors.static",
-    "django.core.context_processors.tz",
-    "django.core.context_processors.request",
-    "coin.isp_database.context_processors.branding",
-    "coin.context_processors.installed_apps",
-    "django.contrib.messages.context_processors.messages")
-
-AUTH_USER_MODEL = 'members.Member'
-
-AUTHENTICATION_BACKENDS = (
-    'django.contrib.auth.backends.ModelBackend',
-)
-
-TEST_RUNNER = 'django.test.runner.DiscoverRunner'
-
-GRAPHITE_SERVER = "http://localhost"
-
-# Configuration for outgoing emails
-#DEFAULT_FROM_EMAIL = "coin@example.com"
-#EMAIL_USE_TLS = True
-#EMAIL_HOST = "smtp.chezmoi.tld"
-
-# Do we use LDAP or not
-LDAP_ACTIVATE = False
-
-# Not setting them results in NameError
-LDAP_USER_BASE_DN = None
-VPN_CONF_BASE_DN = None
-
-# Membership configuration
-# Default cotisation in €, per year
-MEMBER_DEFAULT_COTISATION = 20
-
-# Link to a page with information on how to become a member or pay the
-# membership fee
-MEMBER_MEMBERSHIP_INFO_URL = ''
-
-# Pattern used to display a unique reference for any subscription
-# Helpful for bank wire transfer identification
-SUBSCRIPTION_REFERENCE = 'REF-{subscription.offer.reference}-{subscription.pk}'
-
-# Reset session if cookie older than 2h.
-SESSION_COOKIE_AGE = 7200
-
-# RSS/Atom feeds to display on dashboard
-# feed name (used in template), url, max entries to display
-# "isp" entry gets picked automatically in default index template
-FEEDS = (
-    ('ffdn', 'http://www.ffdn.org/fr/rss.xml', 3),
-#    ('isp', 'http://isp.example.com/feed/', 3),
-)
 # Surcharge les paramètres en utilisant le fichier settings_local.py
 try:
     from settings_local import *

+ 254 - 0
coin/settings_base.py

@@ -0,0 +1,254 @@
+# -*- coding: utf-8 -*-
+from __future__ import unicode_literals
+
+import os
+import ldap
+
+# Django settings for coin project.
+
+# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
+BASE_DIR = os.path.dirname(os.path.dirname(__file__))
+
+PROJECT_PATH = os.path.abspath(os.path.dirname(__file__))
+DEBUG = TEMPLATE_DEBUG = True
+
+ADMINS = (
+    # ('Your Name', 'your_email@example.com'),
+)
+
+MANAGERS = ADMINS
+
+DATABASES = {
+    # Base de donnée du SI
+    'default': {
+        'ENGINE': 'django.db.backends.sqlite3',
+        'NAME': 'coin.sqlite3',
+        'USER': '', # Not needed for SQLite
+        'PASSWORD': '', # Not needed for SQLite
+        'HOST': '',  # Empty for localhost through domain sockets
+        'PORT': '',  # Empty for default
+    },
+}
+
+# Hosts/domain names that are valid for this site; required if DEBUG is False
+# See https://docs.djangoproject.com/en/1.7/ref/settings/#allowed-hosts
+ALLOWED_HOSTS = []
+
+# Local time zone for this installation. Choices can be found here:
+# http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
+# although not all choices may be available on all operating systems.
+# In a Windows environment this must be set to your system time zone.
+TIME_ZONE = 'Europe/Paris'
+
+# Language code for this installation. All choices can be found here:
+# http://www.i18nguy.com/unicode/language-identifiers.html
+LANGUAGE_CODE = 'fr-fr'
+
+SITE_ID = 1
+
+# If you set this to False, Django will make some optimizations so as not
+# to load the internationalization machinery.
+USE_I18N = True
+
+# If you set this to False, Django will not format dates, numbers and
+# calendars according to the current locale.
+USE_L10N = True
+
+# If you set this to False, Django will not use timezone-aware datetimes.
+USE_TZ = True
+
+# Default URL for login and logout
+LOGIN_URL = '/members/login'
+LOGIN_REDIRECT_URL = '/members'
+LOGOUT_URL = '/members/logout'
+
+# Absolute filesystem path to the directory that will hold user-uploaded files.
+# Example: "/var/www/example.com/media/"
+MEDIA_ROOT = os.path.join(BASE_DIR, 'media/')
+
+# URL that handles the media served from MEDIA_ROOT. Make sure to use a
+# trailing slash.
+# Examples: "http://example.com/media/", "http://media.example.com/"
+MEDIA_URL = '/media/'
+
+# Absolute path to the directory static files should be collected to.
+# Don't put anything in this directory yourself; store your static files
+# in apps' "static/" subdirectories and in STATICFILES_DIRS.
+# Example: "/var/www/example.com/static/"
+STATIC_ROOT = os.path.join(BASE_DIR, 'static/')
+
+# URL prefix for static files.
+# Example: "http://example.com/static/", "http://static.example.com/"
+STATIC_URL = '/static/'
+
+# Additional locations of static files
+STATICFILES_DIRS = (
+    # Put strings here, like "/home/html/static" or "C:/www/django/static".
+    # Always use forward slashes, even on Windows.
+    # Don't forget to use absolute paths, not relative paths.
+)
+
+# List of finder classes that know how to find static files in
+# various locations.
+STATICFILES_FINDERS = (
+    'django.contrib.staticfiles.finders.FileSystemFinder',
+    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
+    #'django.contrib.staticfiles.finders.DefaultStorageFinder',
+)
+
+# Location of private files. (Like invoices)
+# In production, this location should not be publicly accessible through
+# the web server
+PRIVATE_FILES_ROOT = os.path.join(BASE_DIR, 'smedia/')
+
+# Backend to use when sending private files to client
+# In production, must be sendfile.backends.xsendfile with Apache xsend file mod
+# Or failing xsendfile, use : sendfile.backends.simple
+# https://github.com/johnsensible/django-sendfile
+SENDFILE_BACKEND = 'sendfile.backends.development'
+
+# Make this unique, and don't share it with anybody.
+SECRET_KEY = '!qy_)gao6q)57#mz1s-d$5^+dp1nt=lk1d19&9bb3co37vn)!3'
+
+# List of callables that know how to import templates from various sources.
+TEMPLATE_LOADERS = (
+    'django.template.loaders.filesystem.Loader',
+    'django.template.loaders.app_directories.Loader',
+    #'django.template.loaders.eggs.Loader',
+)
+
+MIDDLEWARE_CLASSES = (
+    'django.middleware.common.CommonMiddleware',
+    'django.contrib.sessions.middleware.SessionMiddleware',
+    'django.middleware.csrf.CsrfViewMiddleware',
+    'django.contrib.auth.middleware.AuthenticationMiddleware',
+    'django.contrib.messages.middleware.MessageMiddleware',
+    # Uncomment the next line for simple clickjacking protection:
+    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
+)
+
+ROOT_URLCONF = 'coin.urls'
+
+# Python dotted path to the WSGI application used by Django's runserver.
+WSGI_APPLICATION = 'coin.wsgi.application'
+
+TEMPLATE_DIRS = (
+    # Only absolute paths, always forward slashes
+    os.path.join(PROJECT_PATH, 'templates/'),
+)
+
+EXTRA_TEMPLATE_DIRS = tuple()
+
+INSTALLED_APPS = (
+    'django.contrib.auth',
+    'django.contrib.contenttypes',
+    'django.contrib.sessions',
+    'django.contrib.sites',
+    'ldapdb',  # LDAP as database backend
+    'django.contrib.messages',
+    'django.contrib.staticfiles',
+    # Uncomment the next line to enable the admin:
+    'django.contrib.admin',
+    # Uncomment the next line to enable admin documentation:
+    #'django.contrib.admindocs',
+    'polymorphic',
+    # 'south',
+    'autocomplete_light', #Automagic autocomplete foreingkey form component
+    'activelink', #Detect if a link match actual page
+    'coin',
+    'coin.members',
+    'coin.offers',
+    'coin.billing',
+    'coin.resources',
+    'coin.reverse_dns',
+    'coin.configuration',
+    'coin.isp_database',
+)
+
+EXTRA_INSTALLED_APPS = tuple()
+
+# A sample logging configuration. The only tangible logging
+# performed by this configuration is to send an email to
+# the site admins on every HTTP 500 error when DEBUG=False.
+# See http://docs.djangoproject.com/en/dev/topics/logging for
+# more details on how to customize your logging configuration.
+LOGGING = {
+    'version': 1,
+    'disable_existing_loggers': False,
+    'filters': {
+        'require_debug_false': {
+            '()': 'django.utils.log.RequireDebugFalse'
+        }
+    },
+    'handlers': {
+        'mail_admins': {
+            'level': 'ERROR',
+            'filters': ['require_debug_false'],
+            'class': 'django.utils.log.AdminEmailHandler'
+        }
+    },
+    'loggers': {
+        'django.request': {
+            'handlers': ['mail_admins'],
+            'level': 'ERROR',
+            'propagate': True,
+        },
+    }
+}
+
+TEMPLATE_CONTEXT_PROCESSORS = (
+    "django.contrib.auth.context_processors.auth",
+    "django.core.context_processors.debug",
+    "django.core.context_processors.i18n",
+    "django.core.context_processors.media",
+    "django.core.context_processors.static",
+    "django.core.context_processors.tz",
+    "django.core.context_processors.request",
+    "coin.isp_database.context_processors.branding",
+    "coin.context_processors.installed_apps",
+    "django.contrib.messages.context_processors.messages")
+
+AUTH_USER_MODEL = 'members.Member'
+
+AUTHENTICATION_BACKENDS = (
+    'django.contrib.auth.backends.ModelBackend',
+)
+
+TEST_RUNNER = 'django.test.runner.DiscoverRunner'
+
+GRAPHITE_SERVER = "http://localhost"
+
+# Configuration for outgoing emails
+#DEFAULT_FROM_EMAIL = "coin@example.com"
+#EMAIL_USE_TLS = True
+#EMAIL_HOST = "smtp.chezmoi.tld"
+
+# Do we use LDAP or not
+LDAP_ACTIVATE = False
+
+# Not setting them results in NameError
+LDAP_USER_BASE_DN = None
+VPN_CONF_BASE_DN = None
+
+# Membership configuration
+# Default cotisation in €, per year
+MEMBER_DEFAULT_COTISATION = 20
+
+# Link to a page with information on how to become a member or pay the
+# membership fee
+MEMBER_MEMBERSHIP_INFO_URL = ''
+
+# Pattern used to display a unique reference for any subscription
+# Helpful for bank wire transfer identification
+SUBSCRIPTION_REFERENCE = 'REF-{subscription.offer.reference}-{subscription.pk}'
+
+# Reset session if cookie older than 2h.
+SESSION_COOKIE_AGE = 7200
+
+# RSS/Atom feeds to display on dashboard
+# feed name (used in template), url, max entries to display
+# "isp" entry gets picked automatically in default index template
+FEEDS = (
+    ('ffdn', 'http://www.ffdn.org/fr/rss.xml', 3),
+#    ('isp', 'http://isp.example.com/feed/', 3),
+)