stop using environment variables (#34305)
Except the CUSTOMIZATION variable. Setting variables on a specific deployment is now possible in /etc/docbow/settings.py and /etc/docbow/settings.d/*.py files. These settings are the last being loaded and therefore take precedence over docbow_projects.settings. docbow_project/pw/setttings.py and docbow_project/pfwb/setttings.py are kept as legacy documentation but are not loaded any more.
This commit is contained in:
parent
1fbb00c7af
commit
96b0f8a939
|
@ -0,0 +1,22 @@
|
|||
# This file is sourced by "execfile" from docbow_project.settings
|
||||
|
||||
import glob
|
||||
import os
|
||||
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
|
||||
|
||||
PROJECT_NAME = 'docbow'
|
||||
|
||||
ETC_DIR = os.path.join('/etc', PROJECT_NAME)
|
||||
ETC_SETTINGS_PY = os.path.join(ETC_DIR, 'settings.py')
|
||||
|
||||
|
||||
if os.path.exists(ETC_SETTINGS_PY):
|
||||
execfile(ETC_SETTINGS_PY)
|
||||
|
||||
for filename in sorted(glob.glob(os.path.join(ETC_DIR, 'settings.d', '*.py'))):
|
||||
execfile(filename)
|
||||
|
||||
if not globals().get('MIGRATED_SETTINGS'):
|
||||
raise ImproperlyConfigured()
|
|
@ -21,6 +21,8 @@ PIDFILE=$PID_DIR/$NAME.pid
|
|||
SCRIPTNAME=/etc/init.d/$NAME
|
||||
CTL=/usr/bin/$NAME-ctl
|
||||
|
||||
DOCBOW_SETTINGS_FILE=/usr/lib/$NAME/debian_config.py
|
||||
|
||||
USER=docbow
|
||||
GROUP=docbow
|
||||
|
||||
|
@ -40,10 +42,6 @@ export LANG=fr_FR.UTF-8 LC_ALL=fr_FR.UTF-8
|
|||
# Exit if the package is not installed
|
||||
[ -x $DAEMON ] || exit 0
|
||||
|
||||
# Load config
|
||||
. /etc/$NAME/db
|
||||
. /etc/$NAME/secret
|
||||
|
||||
# Read configuration variable file if it is present
|
||||
[ -r /etc/default/$NAME ] && . /etc/default/$NAME
|
||||
|
||||
|
@ -59,6 +57,10 @@ if [ ! -d $PID_DIR ]; then
|
|||
install -d -m 755 -o $USER -g $GROUP $PID_DIR
|
||||
fi
|
||||
|
||||
# environment for wsgi and ctl
|
||||
export DOCBOW_SETTINGS_FILE
|
||||
|
||||
|
||||
#
|
||||
# Function that starts the daemon/service
|
||||
#
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
debian/conf/docbow.nginx /etc/nginx/sites-available/
|
||||
debian/conf/db.template /usr/share/docbow
|
||||
debian/conf/magic /usr/share/docbow
|
||||
debian/debian_config.py /usr/lib/docbow
|
||||
|
|
|
@ -6,10 +6,6 @@ import os
|
|||
if __name__ == "__main__":
|
||||
from django.core.management import execute_from_command_line
|
||||
|
||||
customization = os.environ.get('CUSTOMIZATION', 'pfwb')
|
||||
if customization:
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "docbow_project.%s.settings" % customization)
|
||||
else:
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "docbow_project.settings")
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "docbow_project.settings")
|
||||
|
||||
execute_from_command_line(sys.argv)
|
||||
|
|
|
@ -1,117 +1,92 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import os
|
||||
import django.conf.global_settings
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
gettext_noop = lambda s: s
|
||||
|
||||
BASE_DIR = os.path.join(os.path.dirname(__file__), '..')
|
||||
PROJECT_NAME = 'docbow'
|
||||
ETC_DIR = os.path.join('/etc', PROJECT_NAME)
|
||||
|
||||
# boolean settings
|
||||
__ENVIRONMENT_DEFAULTS = dict(
|
||||
# booleans
|
||||
DEBUG=False,
|
||||
DEBUG_PROPAGATE_EXCEPTIONS=False,
|
||||
USE_DEBUG_TOOLBAR=False,
|
||||
# paths
|
||||
STATIC_ROOT='/var/lib/%s/collectstatic' % PROJECT_NAME,
|
||||
STATIC_URL='/static/',
|
||||
MEDIA_ROOT='/var/lib/%s/media' % PROJECT_NAME,
|
||||
MEDIA_URL='/media/',
|
||||
# i18n/l18n
|
||||
TIME_ZONE = 'Europe/Paris',
|
||||
LANGUAGE_CODE = 'fr',
|
||||
SITE_ID = 1,
|
||||
USE_I18N=True,
|
||||
USE_L10N=True,
|
||||
USE_TZ=True,
|
||||
# core
|
||||
ROOT_URLCONF='docbow_project.urls',
|
||||
STATICFILES_DIRS=('/var/lib/%s/static/' % PROJECT_NAME,),
|
||||
FILE_PER_PAGE=30,
|
||||
DO_NOT_SEND_GROUPS=(
|
||||
u'Administrateurs des groupes',
|
||||
u'Administrateurs des types de document',
|
||||
u'Administrateurs des utilisateurs',
|
||||
u"Utilisateurs de l'application" ),
|
||||
CONTACT_GROUPS=(u'Contact « Administrateur du système »',),
|
||||
LOCALE_PATHS=(os.path.join(BASE_DIR, 'docbow_project', 'locale'),),
|
||||
DEFAULT_FROM_EMAIL='admin@example.com',
|
||||
CONTACT_SUBJECT_PREFIX='Contact depuis docbow: ',
|
||||
ALLOWED_HOSTS=['*'],
|
||||
LOGIN_REDIRECT_URL='/inbox',
|
||||
MESSAGE_STORAGE='django.contrib.messages.storage.fallback.FallbackStorage',
|
||||
AUTHENTICATION_BACKENDS=(
|
||||
'docbow_project.docbow.auth_backend.DelegationAuthBackend',
|
||||
'django.contrib.auth.backends.ModelBackend' ),
|
||||
INTERNAL_IPS=('127.0.0.1','82.234.244.169'),
|
||||
ADMINS=(),
|
||||
SECRET_KEY=None,
|
||||
SOUTH_TESTS_MIGRATE=True,
|
||||
OVH_SMS_ACCOUNT='sms-db26857-1',
|
||||
OVH_SMS_LOGIN='pfwb',
|
||||
OVH_SMS_PASSWORD='',
|
||||
OVH_SMS_FROM='Dauvergne',
|
||||
DOCBOW_SMS_CARRIER_CLASS='docbow_project.docbow.sms_carrier_ovh.OVHSMSCarrier',
|
||||
DOCBOW_ORGANIZATION_SHORT='PFWB',
|
||||
DOCBOW_ORGANIZATION=u'Parlement de la Fédération Wallonie-Bruxelles',
|
||||
DOCBOW_NOTIFIERS=(
|
||||
'docbow_project.docbow.notification.MailNotifier',
|
||||
'docbow_project.docbow.notification.SMSNotifier',
|
||||
),
|
||||
DOCBOW_PFWB_GED_DIRECTORY='/var/lib/docbow/ged/',
|
||||
DOCBOW_PFWB_SENDMAIL_DEFAULT_TYPE_ID=None,
|
||||
DOCBOW_PFWB_SENDMAIL_DEFAULT_TYPE_NAME=u'Divers',
|
||||
DOCBOW_PFWB_SENDMAIL_TABELLIO_EXPEDITION_EMAIL='commande.documents@pfwb.be',
|
||||
DOCBOW_PFWB_SENDMAIL_TABELLIO_EXPEDITION_USER_ID=None,
|
||||
DOCBOW_PFWB_SENDMAIL_ATTACHED_FILE_EMAIL='dontknow@pfwb.be',
|
||||
DOCBOW_PFWB_SENDMAIL_ATTACHED_FILE_USER_ID=None,
|
||||
DATE_INPUT_FORMATS=('%d/%m/%Y', '%Y-%m-%d'),
|
||||
CRISPY_TEMPLATE_PACK='uni_form',
|
||||
DOCBOW_TIMESTAMP_PROVIDER='certum',
|
||||
DOCBOW_MAX_FILE_SIZE=10*1024*1024,
|
||||
CUSTOMIZATION='pfwb',
|
||||
DOCBOW_PRIVATE_DOCUMENTS=False,
|
||||
DOCBOW_BASE_URL='http://localhost:8000',
|
||||
PLATFORM='prod',
|
||||
DOCBOW_EDIT_EMAIL=False,
|
||||
EMAIL_HOST='localhost',
|
||||
SECURE_PROXY_SSL_HEADER = (),
|
||||
SESSION_COOKIE_AGE=7200,
|
||||
# booleans
|
||||
DEBUG = False,
|
||||
DEBUG_PROPAGATE_EXCEPTIONS = False
|
||||
USE_DEBUG_TOOLBAR = False
|
||||
# paths
|
||||
STATIC_ROOT = '/var/lib/%s/collectstatic' % PROJECT_NAME
|
||||
STATIC_URL = '/static/'
|
||||
MEDIA_ROOT = '/var/lib/%s/media' % PROJECT_NAME
|
||||
MEDIA_URL = '/media/'
|
||||
# i18n/l18n
|
||||
TIME_ZONE = 'Europe/Paris'
|
||||
LANGUAGE_CODE = 'fr'
|
||||
SITE_ID = 1
|
||||
USE_I18N = True
|
||||
USE_L10N = True
|
||||
USE_TZ = True
|
||||
# core
|
||||
ROOT_URLCONF = 'docbow_project.urls'
|
||||
STATICFILES_DIRS = ('/var/lib/%s/static/' % PROJECT_NAME,)
|
||||
FILE_PER_PAGE = 30
|
||||
DO_NOT_SEND_GROUPS = (
|
||||
u'Administrateurs des groupes',
|
||||
u'Administrateurs des types de document',
|
||||
u'Administrateurs des utilisateurs',
|
||||
u"Utilisateurs de l'application"
|
||||
)
|
||||
CONTACT_GROUPS = (u'Contact « Administrateur du système »',)
|
||||
LOCALE_PATHS = (os.path.join(BASE_DIR, 'docbow_project', 'locale'),)
|
||||
DEFAULT_FROM_EMAIL = 'admin@example.com'
|
||||
CONTACT_SUBJECT_PREFIX = 'Contact depuis docbow: '
|
||||
ALLOWED_HOSTS = ['*']
|
||||
LOGIN_REDIRECT_URL = '/inbox'
|
||||
MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage'
|
||||
AUTHENTICATION_BACKENDS = (
|
||||
'docbow_project.docbow.auth_backend.DelegationAuthBackend',
|
||||
'django.contrib.auth.backends.ModelBackend'
|
||||
)
|
||||
INTERNAL_IPS = ('127.0.0.1', '82.234.244.169')
|
||||
ADMINS = ()
|
||||
SECRET_KEY = None
|
||||
SOUTH_TESTS_MIGRATE = True
|
||||
OVH_SMS_ACCOUNT = 'sms-db26857-1'
|
||||
OVH_SMS_LOGIN = 'pfwb'
|
||||
OVH_SMS_PASSWORD = ''
|
||||
OVH_SMS_FROM = 'Dauvergne'
|
||||
DOCBOW_SMS_CARRIER_CLASS = 'docbow_project.docbow.sms_carrier_ovh.OVHSMSCarrier'
|
||||
DOCBOW_ORGANIZATION_SHORT = 'PFWB'
|
||||
DOCBOW_ORGANIZATION = u'Parlement de la Fédération Wallonie-Bruxelles'
|
||||
DOCBOW_NOTIFIERS = (
|
||||
'docbow_project.docbow.notification.MailNotifier',
|
||||
'docbow_project.docbow.notification.SMSNotifier',
|
||||
)
|
||||
DOCBOW_PFWB_GED_DIRECTORY = '/var/lib/docbow/ged/'
|
||||
DOCBOW_PFWB_SENDMAIL_DEFAULT_TYPE_ID = None
|
||||
DOCBOW_PFWB_SENDMAIL_DEFAULT_TYPE_NAME = u'Divers'
|
||||
DOCBOW_PFWB_SENDMAIL_TABELLIO_EXPEDITION_EMAIL = 'commande.documents@pfwb.be'
|
||||
DOCBOW_PFWB_SENDMAIL_TABELLIO_EXPEDITION_USER_ID = None
|
||||
DOCBOW_PFWB_SENDMAIL_ATTACHED_FILE_EMAIL = 'dontknow@pfwb.be'
|
||||
DOCBOW_PFWB_SENDMAIL_ATTACHED_FILE_USER_ID = None
|
||||
DATE_INPUT_FORMATS = ('%d/%m/%Y', '%Y-%m-%d')
|
||||
CRISPY_TEMPLATE_PACK = 'uni_form'
|
||||
DOCBOW_TIMESTAMP_PROVIDER = 'certum'
|
||||
DOCBOW_MAX_FILE_SIZE = 10*1024*1024
|
||||
CUSTOMIZATION = os.environ.get('CUSTOMIZATION', 'pfwb')
|
||||
DOCBOW_PRIVATE_DOCUMENTS = False
|
||||
DOCBOW_BASE_URL = 'http://localhost:8000'
|
||||
PLATFORM = 'prod'
|
||||
DOCBOW_EDIT_EMAIL = False
|
||||
EMAIL_HOST = 'localhost'
|
||||
SECURE_PROXY_SSL_HEADER = ()
|
||||
SESSION_COOKIE_AGE = 7200
|
||||
|
||||
TEST_RUNNER = 'django.test.runner.DiscoverRunner'
|
||||
|
||||
for key, default in __ENVIRONMENT_DEFAULTS.iteritems():
|
||||
try:
|
||||
value = os.environ[key]
|
||||
if default is True or default is False:
|
||||
if value.isdigit():
|
||||
value = bool(int(value))
|
||||
else:
|
||||
value = value.lower() in ('yes', 'true', 'y')
|
||||
elif isinstance(default, (tuple, list)):
|
||||
value = [ x.strip() for x in value.split(':')]
|
||||
if len(default) or key in ('ADMINS',):
|
||||
if key in ('ADMINS',) or isinstance(default[0], (tuple, list)):
|
||||
value = [ x.split(';') for x in value ]
|
||||
elif isinstance(default[0], unicode):
|
||||
value = [ unicode(x, 'utf8') for x in value ]
|
||||
elif isinstance(default, unicode):
|
||||
value = unicode(value, 'utf8')
|
||||
elif isinstance(default, int):
|
||||
value = int(value)
|
||||
except KeyError:
|
||||
value = default
|
||||
globals()[key] = value
|
||||
|
||||
MANAGERS = ADMINS
|
||||
|
||||
DATABASES = {
|
||||
'default': {
|
||||
'ENGINE': os.environ.get('DATABASE_ENGINE', 'django.db.backends.sqlite3'),
|
||||
'NAME': os.environ.get('DATABASE_NAME', os.path.join(BASE_DIR, PROJECT_NAME + '.db')),
|
||||
'ENGINE': 'django.db.backends.postgresql_psycopg2',
|
||||
'NAME': 'docbow',
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -133,7 +108,6 @@ else:
|
|||
'django.template.loaders.app_directories.Loader',)),
|
||||
)
|
||||
|
||||
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
|
@ -265,27 +239,9 @@ STATICFILES_DIRS += (os.path.join(BASE_DIR, 'docbow_project', CUSTOMIZATION, 'st
|
|||
STATICFILES_DIRS += (os.path.join(BASE_DIR, 'docbow_project', 'docbow', 'static'),)
|
||||
HELP_DIR = '/usr/share/doc/docbow/help'
|
||||
|
||||
if 'SENTRY_DSN' in os.environ:
|
||||
try:
|
||||
from raven.transport.requests import RequestsHTTPTransport
|
||||
except ImportError:
|
||||
raise ImproperlyConfigured('unable to load python-raven')
|
||||
else:
|
||||
SENTRY_DSN = os.environ['SENTRY_DSN']
|
||||
SENTRY_TRANSPORT = RequestsHTTPTransport
|
||||
LOGGING['handlers']['sentry'] = {
|
||||
'level': 'ERROR',
|
||||
'class': 'raven.handlers.logging.SentryHandler',
|
||||
'dsn': SENTRY_DSN,
|
||||
}
|
||||
INSTALLED_APPS += ('raven.contrib.django.raven_compat',)
|
||||
for logger in LOGGING['loggers'].values():
|
||||
if 'syslog' in logger['handlers']:
|
||||
logger['handlers'].append('sentry')
|
||||
else:
|
||||
for logger in LOGGING['loggers'].values():
|
||||
if 'syslog' in logger['handlers']:
|
||||
logger['handlers'].append('mail_admins')
|
||||
for logger in LOGGING['loggers'].values():
|
||||
if 'syslog' in logger['handlers']:
|
||||
logger['handlers'].append('mail_admins')
|
||||
|
||||
if DEBUG and not globals()['SECRET_KEY']:
|
||||
SECRET_KEY = 'coin'
|
||||
|
@ -302,7 +258,7 @@ for admin in ADMINS:
|
|||
assert len(admin) == 2, 'ADMINS setting must be a colon separated list of name and emails separated by a semi-colon: %s' % ADMINS
|
||||
assert '@' in admin[1], 'ADMINS setting pairs second value must be emails: %s' % ADMINS
|
||||
|
||||
STATSD_CLIENT = os.environ.get('STATSD_CLIENT', 'django_statsd.clients.null')
|
||||
STATSD_CLIENT = 'django_statsd.clients.null'
|
||||
|
||||
if STATSD_CLIENT != 'django_statsd.clients.null':
|
||||
MIDDLEWARE_CLASSES = (
|
||||
|
@ -311,10 +267,6 @@ if STATSD_CLIENT != 'django_statsd.clients.null':
|
|||
) + MIDDLEWARE_CLASSES
|
||||
INSTALLED_APPS += ( 'django_statsd',)
|
||||
|
||||
ETC_SETTINGS_PY = os.path.join(ETC_DIR, 'settings.py')
|
||||
|
||||
if os.path.exists(ETC_SETTINGS_PY):
|
||||
execfile(ETC_SETTINGS_PY, globals())
|
||||
|
||||
local_settings_file = os.environ.get('DOCBOW_SETTINGS_FILE', 'local_settings.py')
|
||||
if os.path.exists(local_settings_file):
|
||||
|
|
|
@ -15,7 +15,7 @@ framework.
|
|||
"""
|
||||
import os
|
||||
|
||||
os.environ["DJANGO_SETTINGS_MODULE"] = "docbow_project.%s.settings" % os.environ['CUSTOMIZATION']
|
||||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "docbow_project.settings")
|
||||
|
||||
from django.core.wsgi import get_wsgi_application
|
||||
application = get_wsgi_application()
|
||||
|
|
|
@ -10,3 +10,14 @@ DATABASES = {
|
|||
},
|
||||
}
|
||||
}
|
||||
|
||||
CUSTOMIZATION = os.environ['CUSTOMIZATION']
|
||||
|
||||
if CUSTOMIZATION == 'pfwb':
|
||||
DOCBOW_EDIT_EMAIL = True
|
||||
|
||||
elif CUSTOMIZATION == 'pw':
|
||||
DOCBOW_PERSONAL_EMAIL = False
|
||||
DOCBOW_MOBILE_PHONE = False
|
||||
DOCBOW_GROUP_LISTING = False
|
||||
DOCBOW_DEFAULT_ACCEPT_NOTIFICATIONS_FOR_GUEST = False
|
||||
|
|
Loading…
Reference in New Issue