def configure_django(): """Setup Django configuration in the absense of .settings file""" # In module_loader.py we reverse URLs for the menu before having a proper # request. In this case, get_script_prefix (used by reverse) returns the # wrong prefix. Set it here manually to have the correct prefix right away. django.core.urlresolvers.set_script_prefix(cfg.server_dir) 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.request', 'django.core.context_processors.static', 'django.core.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'plinth.context_processors.common'] logging_configuration = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'default': { 'format': '[%(asctime)s] %(name)-14s %(levelname)-8s %(message)s', } }, 'handlers': { 'file': { 'class': 'logging.FileHandler', 'filename': cfg.status_log_file, 'formatter': 'default' }, 'console': { 'class': 'logging.StreamHandler', 'formatter': 'default' } }, 'root': { 'handlers': ['console', 'file'], 'level': 'DEBUG' if cfg.debug else 'INFO' } } applications = ['bootstrapform', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'plinth'] applications += module_loader.get_modules_to_load() sessions_directory = os.path.join(cfg.data_dir, 'sessions') secure_proxy_ssl_header = None if cfg.secure_proxy_ssl_header: secure_proxy_ssl_header = (cfg.secure_proxy_ssl_header, 'https') django.conf.settings.configure( ALLOWED_HOSTS=['*'], CACHES={'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}}, DATABASES={'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': cfg.store_file}}, DEBUG=cfg.debug, INSTALLED_APPS=applications, LOGGING=logging_configuration, LOGIN_URL='users:login', LOGIN_REDIRECT_URL='apps:index', LOGOUT_URL='users:logout', MESSAGE_TAGS={message_constants.ERROR: 'danger'}, MIDDLEWARE_CLASSES=( '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', 'plinth.modules.first_boot.middleware.FirstBootMiddleware', ), ROOT_URLCONF='plinth.urls', SECURE_PROXY_SSL_HEADER=secure_proxy_ssl_header, SESSION_ENGINE='django.contrib.sessions.backends.file', SESSION_FILE_PATH=sessions_directory, STATIC_URL='/'.join([cfg.server_dir, 'static/']).replace('//', '/'), TEMPLATE_CONTEXT_PROCESSORS=context_processors, USE_X_FORWARDED_HOST=bool(cfg.use_x_forwarded_host)) django.setup() LOGGER.info('Configured Django with applications - %s', applications) LOGGER.info('Creating or adding new tables to data file') django.core.management.call_command('syncdb', interactive=False) os.chmod(cfg.store_file, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)
def configure_django(): """Setup Django configuration in the absense of .settings file""" logging_configuration = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'default': { 'format': '[%(asctime)s] %(name)-14s %(levelname)-8s %(message)s', } }, 'handlers': { 'file': { 'class': 'logging.FileHandler', 'filename': cfg.status_log_file, 'formatter': 'default' }, 'console': { 'class': 'logging.StreamHandler', 'formatter': 'default' } }, 'root': { 'handlers': ['console', 'file'], 'level': 'DEBUG' if cfg.debug else 'INFO' } } templates = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.request', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'plinth.context_processors.common', ], }, }, ] applications = [ 'bootstrapform', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'stronghold', 'plinth' ] applications += module_loader.get_modules_to_load() sessions_directory = os.path.join(cfg.data_dir, 'sessions') secure_proxy_ssl_header = None if cfg.secure_proxy_ssl_header: secure_proxy_ssl_header = (cfg.secure_proxy_ssl_header, 'https') django.conf.settings.configure( ALLOWED_HOSTS=['*'], CACHES={ 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache' } }, DATABASES={ 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': cfg.store_file } }, DEBUG=cfg.debug, FORCE_SCRIPT_NAME=cfg.server_dir, INSTALLED_APPS=applications, LOGGING=logging_configuration, LOGIN_URL='users:login', LOGIN_REDIRECT_URL='index', MESSAGE_TAGS={message_constants.ERROR: 'danger'}, MIDDLEWARE_CLASSES=( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'stronghold.middleware.LoginRequiredMiddleware', 'plinth.middleware.AdminRequiredMiddleware', 'plinth.modules.first_boot.middleware.FirstBootMiddleware', 'plinth.middleware.SetupMiddleware', ), ROOT_URLCONF='plinth.urls', SECURE_PROXY_SSL_HEADER=secure_proxy_ssl_header, SESSION_ENGINE='django.contrib.sessions.backends.file', SESSION_FILE_PATH=sessions_directory, STATIC_URL='/'.join([cfg.server_dir, 'static/']).replace('//', '/'), TEMPLATES=templates, USE_L10N=True, USE_X_FORWARDED_HOST=cfg.use_x_forwarded_host) django.setup(set_prefix=True) logger.debug('Configured Django with applications - %s', applications) logger.debug('Creating or adding new tables to data file') verbosity = 1 if cfg.debug else 0 django.core.management.call_command('migrate', '--fake-initial', interactive=False, verbosity=verbosity) os.chmod(cfg.store_file, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)
def configure_django(): """Setup Django configuration in the absence of .settings file""" logging_configuration = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'default': { 'format': '[%(asctime)s] %(name)-14s %(levelname)-8s %(message)s', } }, 'handlers': { 'file': { 'class': 'logging.FileHandler', 'filename': cfg.status_log_file, 'formatter': 'default' }, 'console': { 'class': 'logging.StreamHandler', 'formatter': 'default' } }, 'root': { 'handlers': ['console', 'file'], 'level': 'DEBUG' if cfg.debug else 'INFO' } } templates = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.request', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'plinth.context_processors.common', ], }, }, ] applications = [ 'axes', 'captcha', 'bootstrapform', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'stronghold', 'plinth', ] applications += module_loader.get_modules_to_load() sessions_directory = os.path.join(cfg.data_dir, 'sessions') secure_proxy_ssl_header = None if cfg.secure_proxy_ssl_header: secure_proxy_ssl_header = (cfg.secure_proxy_ssl_header, 'https') pwd = 'django.contrib.auth.password_validation' django.conf.settings.configure( ALLOWED_HOSTS=['*'], AUTH_PASSWORD_VALIDATORS=[ { 'NAME': '{}.UserAttributeSimilarityValidator'.format(pwd), }, { 'NAME': '{}.MinimumLengthValidator'.format(pwd), 'OPTIONS': { 'min_length': 8, } }, { 'NAME': '{}.CommonPasswordValidator'.format(pwd), }, { 'NAME': '{}.NumericPasswordValidator'.format(pwd), }, ], AXES_LOCKOUT_URL='locked/', AXES_BEHIND_REVERSE_PROXY=True, CACHES={ 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache' } }, CAPTCHA_FONT_PATH=[ '/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf' ], CAPTCHA_LENGTH=6, CAPTCHA_FLITE_PATH='/usr/bin/flite', DATABASES={ 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': cfg.store_file } }, DEBUG=cfg.debug, FORCE_SCRIPT_NAME=cfg.server_dir, INSTALLED_APPS=applications, IPWARE_META_PRECEDENCE_ORDER=('HTTP_X_FORWARDED_FOR',), LOGGING=logging_configuration, LOGIN_URL='users:login', LOGIN_REDIRECT_URL='index', MESSAGE_TAGS={message_constants.ERROR: 'danger'}, MIDDLEWARE=( 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'stronghold.middleware.LoginRequiredMiddleware', 'plinth.middleware.AdminRequiredMiddleware', 'plinth.middleware.FirstSetupMiddleware', 'plinth.modules.first_boot.middleware.FirstBootMiddleware', 'plinth.middleware.SetupMiddleware', ), ROOT_URLCONF='plinth.urls', SECURE_BROWSER_XSS_FILTER=True, SECURE_CONTENT_TYPE_NOSNIFF=True, SECURE_PROXY_SSL_HEADER=secure_proxy_ssl_header, SESSION_ENGINE='django.contrib.sessions.backends.file', SESSION_FILE_PATH=sessions_directory, STATIC_URL='/'.join([cfg.server_dir, 'static/']).replace('//', '/'), # STRONGHOLD_PUBLIC_URLS=(r'^captcha/', ), STRONGHOLD_PUBLIC_NAMED_URLS=( 'captcha-image', 'captcha-image-2x', 'captcha-audio', 'captcha-refresh', ), TEMPLATES=templates, USE_L10N=True, USE_X_FORWARDED_HOST=cfg.use_x_forwarded_host) django.setup(set_prefix=True) logger.debug('Configured Django with applications - %s', applications) logger.debug('Creating or adding new tables to data file') verbosity = 1 if cfg.debug else 0 django.core.management.call_command('migrate', '--fake-initial', interactive=False, verbosity=verbosity) os.chmod(cfg.store_file, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)
def configure_django(): """Setup Django configuration in the absense of .settings file""" logging_configuration = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'default': { 'format': '[%(asctime)s] %(name)-14s %(levelname)-8s %(message)s', } }, 'handlers': { 'file': { 'class': 'logging.FileHandler', 'filename': cfg.status_log_file, 'formatter': 'default' }, 'console': { 'class': 'logging.StreamHandler', 'formatter': 'default' } }, 'root': { 'handlers': ['console', 'file'], 'level': 'DEBUG' if cfg.debug else 'INFO' } } templates = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.request', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'plinth.context_processors.common', ], }, }, ] applications = ['bootstrapform', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'stronghold', 'plinth'] applications += module_loader.get_modules_to_load() sessions_directory = os.path.join(cfg.data_dir, 'sessions') secure_proxy_ssl_header = None if cfg.secure_proxy_ssl_header: secure_proxy_ssl_header = (cfg.secure_proxy_ssl_header, 'https') django.conf.settings.configure( ALLOWED_HOSTS=['*'], CACHES={'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}}, DATABASES={'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': cfg.store_file}}, DEBUG=cfg.debug, FORCE_SCRIPT_NAME=cfg.server_dir, INSTALLED_APPS=applications, LOGGING=logging_configuration, LOGIN_URL='users:login', LOGIN_REDIRECT_URL='index', MESSAGE_TAGS={message_constants.ERROR: 'danger'}, MIDDLEWARE_CLASSES=( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'stronghold.middleware.LoginRequiredMiddleware', 'plinth.middleware.AdminRequiredMiddleware', 'plinth.modules.first_boot.middleware.FirstBootMiddleware', 'plinth.middleware.SetupMiddleware', ), ROOT_URLCONF='plinth.urls', SECURE_PROXY_SSL_HEADER=secure_proxy_ssl_header, SESSION_ENGINE='django.contrib.sessions.backends.file', SESSION_FILE_PATH=sessions_directory, STATIC_URL='/'.join([cfg.server_dir, 'static/']).replace('//', '/'), TEMPLATES=templates, USE_L10N=True, USE_X_FORWARDED_HOST=cfg.use_x_forwarded_host) django.setup(set_prefix=True) logger.debug('Configured Django with applications - %s', applications) logger.debug('Creating or adding new tables to data file') verbosity = 1 if cfg.debug else 0 django.core.management.call_command('migrate', '--fake-initial', interactive=False, verbosity=verbosity) os.chmod(cfg.store_file, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)
def configure_django(): """Setup Django configuration in the absense of .settings file""" # In module_loader.py we reverse URLs for the menu before having a proper # request. In this case, get_script_prefix (used by reverse) returns the # wrong prefix. Set it here manually to have the correct prefix right away. django.core.urlresolvers.set_script_prefix(cfg.server_dir) 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.request', 'django.core.context_processors.static', 'django.core.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'plinth.context_processors.common' ] logging_configuration = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'default': { 'format': '[%(asctime)s] %(name)-14s %(levelname)-8s %(message)s', } }, 'handlers': { 'file': { 'class': 'logging.FileHandler', 'filename': cfg.status_log_file, 'formatter': 'default' }, 'console': { 'class': 'logging.StreamHandler', 'formatter': 'default' } }, 'root': { 'handlers': ['console', 'file'], 'level': 'DEBUG' if cfg.debug else 'INFO' } } applications = [ 'bootstrapform', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'plinth' ] applications += module_loader.get_modules_to_load() sessions_directory = os.path.join(cfg.data_dir, 'sessions') secure_proxy_ssl_header = None if cfg.secure_proxy_ssl_header: secure_proxy_ssl_header = (cfg.secure_proxy_ssl_header, 'https') django.conf.settings.configure( ALLOWED_HOSTS=['*'], CACHES={ 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache' } }, DATABASES={ 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': cfg.store_file } }, DEBUG=cfg.debug, INSTALLED_APPS=applications, LOGGING=logging_configuration, LOGIN_URL='users:login', LOGIN_REDIRECT_URL='apps:index', LOGOUT_URL='users:logout', MESSAGE_TAGS={message_constants.ERROR: 'danger'}, MIDDLEWARE_CLASSES=( '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', 'plinth.modules.first_boot.middleware.FirstBootMiddleware', ), ROOT_URLCONF='plinth.urls', SECURE_PROXY_SSL_HEADER=secure_proxy_ssl_header, SESSION_ENGINE='django.contrib.sessions.backends.file', SESSION_FILE_PATH=sessions_directory, STATIC_URL='/'.join([cfg.server_dir, 'static/']).replace('//', '/'), TEMPLATE_CONTEXT_PROCESSORS=context_processors, USE_X_FORWARDED_HOST=bool(cfg.use_x_forwarded_host)) django.setup() LOGGER.info('Configured Django with applications - %s', applications) LOGGER.info('Creating or adding new tables to data file') django.core.management.call_command('syncdb', interactive=False) os.chmod(cfg.store_file, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)
def configure_django(): """Setup Django configuration in the absense of .settings file""" # In module_loader.py we reverse URLs for the menu before having a proper # request. In this case, get_script_prefix (used by reverse) returns the # wrong prefix. Set it here manually to have the correct prefix right away. django.core.urlresolvers.set_script_prefix(cfg.server_dir) logging_configuration = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'default': { 'format': '[%(asctime)s] %(name)-14s %(levelname)-8s %(message)s', } }, 'handlers': { 'file': { 'class': 'logging.FileHandler', 'filename': cfg.status_log_file, 'formatter': 'default' }, 'console': { 'class': 'logging.StreamHandler', 'formatter': 'default' } }, 'root': { 'handlers': ['console', 'file'], 'level': 'DEBUG' if cfg.debug else 'INFO' } } templates = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.request', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'plinth.context_processors.common', ], }, }, ] applications = ['bootstrapform', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'stronghold', 'plinth'] applications += module_loader.get_modules_to_load() sessions_directory = os.path.join(cfg.data_dir, 'sessions') secure_proxy_ssl_header = None if cfg.secure_proxy_ssl_header: secure_proxy_ssl_header = (cfg.secure_proxy_ssl_header, 'https') # Read translated languages from the 'locale' directory languages = [('en', 'English')] locale_dir = os.path.join(os.path.dirname(__file__), 'locale') if os.path.isdir(locale_dir): translated_language_codes = next(os.walk(locale_dir))[1] all_languages = dict(django.conf.global_settings.LANGUAGES) for code in translated_language_codes: if code in all_languages: languages.append((code, all_languages[code])) languages = sorted(languages, key=lambda tup: tup[1]) django.conf.settings.configure( ALLOWED_HOSTS=['*'], CACHES={'default': {'BACKEND': 'django.core.cache.backends.dummy.DummyCache'}}, DATABASES={'default': {'ENGINE': 'django.db.backends.sqlite3', 'NAME': cfg.store_file}}, DEBUG=cfg.debug, INSTALLED_APPS=applications, LANGUAGES=languages, LOGGING=logging_configuration, LOGIN_URL='users:login', LOGIN_REDIRECT_URL='apps:index', LOGOUT_URL='users:logout', MESSAGE_TAGS={message_constants.ERROR: 'danger'}, MIDDLEWARE_CLASSES=( 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'stronghold.middleware.LoginRequiredMiddleware', 'plinth.modules.first_boot.middleware.FirstBootMiddleware', ), ROOT_URLCONF='plinth.urls', SECURE_PROXY_SSL_HEADER=secure_proxy_ssl_header, SESSION_ENGINE='django.contrib.sessions.backends.file', SESSION_FILE_PATH=sessions_directory, STATIC_URL='/'.join([cfg.server_dir, 'static/']).replace('//', '/'), STRONGHOLD_PUBLIC_NAMED_URLS=('users:login', 'users:logout'), TEMPLATES=templates, USE_L10N=True, USE_X_FORWARDED_HOST=cfg.use_x_forwarded_host) django.setup() logger.info('Configured Django with applications - %s', applications) logger.info('Creating or adding new tables to data file') django.core.management.call_command('migrate', '--fake-initial', interactive=False) os.chmod(cfg.store_file, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)
def configure_django(): """Setup Django configuration in the absence of .settings file""" logging_configuration = { 'version': 1, 'disable_existing_loggers': False, 'formatters': { 'default': { 'format': '[%(asctime)s] %(name)-14s %(levelname)-8s %(message)s', } }, 'handlers': { 'file': { 'class': 'logging.FileHandler', 'filename': cfg.status_log_file, 'formatter': 'default' }, 'console': { 'class': 'logging.StreamHandler', 'formatter': 'default' } }, 'root': { 'handlers': ['console', 'file'], 'level': 'DEBUG' if cfg.debug else 'INFO' } } templates = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.contrib.auth.context_processors.auth', 'django.template.context_processors.debug', 'django.template.context_processors.i18n', 'django.template.context_processors.media', 'django.template.context_processors.request', 'django.template.context_processors.static', 'django.template.context_processors.tz', 'django.contrib.messages.context_processors.messages', 'plinth.context_processors.common', ], }, }, ] applications = [ 'axes', 'captcha', 'bootstrapform', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.messages', 'stronghold', 'plinth', ] applications += module_loader.get_modules_to_load() sessions_directory = os.path.join(cfg.data_dir, 'sessions') secure_proxy_ssl_header = None if cfg.secure_proxy_ssl_header: secure_proxy_ssl_header = (cfg.secure_proxy_ssl_header, 'https') pwd = 'django.contrib.auth.password_validation' django.conf.settings.configure( ALLOWED_HOSTS=['*'], AUTH_PASSWORD_VALIDATORS=[ { 'NAME': '{}.UserAttributeSimilarityValidator'.format(pwd), }, { 'NAME': '{}.MinimumLengthValidator'.format(pwd), 'OPTIONS': { 'min_length': 8, } }, { 'NAME': '{}.CommonPasswordValidator'.format(pwd), }, { 'NAME': '{}.NumericPasswordValidator'.format(pwd), }, ], AXES_LOCKOUT_URL='locked/', AXES_BEHIND_REVERSE_PROXY=True, CACHES={ 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache' } }, CAPTCHA_FONT_PATH=[ '/usr/share/fonts/truetype/ttf-bitstream-vera/Vera.ttf' ], CAPTCHA_LENGTH=6, CAPTCHA_FLITE_PATH='/usr/bin/flite', DATABASES={ 'default': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': cfg.store_file } }, DEBUG=cfg.debug, FORCE_SCRIPT_NAME=cfg.server_dir, INSTALLED_APPS=applications, LOGGING=logging_configuration, LOGIN_URL='users:login', LOGIN_REDIRECT_URL='index', MESSAGE_TAGS={message_constants.ERROR: 'danger'}, MIDDLEWARE_CLASSES=( 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'stronghold.middleware.LoginRequiredMiddleware', 'plinth.middleware.AdminRequiredMiddleware', 'plinth.middleware.FirstSetupMiddleware', 'plinth.modules.first_boot.middleware.FirstBootMiddleware', 'plinth.middleware.SetupMiddleware', ), ROOT_URLCONF='plinth.urls', SECURE_BROWSER_XSS_FILTER=True, SECURE_CONTENT_TYPE_NOSNIFF=True, SECURE_PROXY_SSL_HEADER=secure_proxy_ssl_header, SESSION_ENGINE='django.contrib.sessions.backends.file', SESSION_FILE_PATH=sessions_directory, STATIC_URL='/'.join([cfg.server_dir, 'static/']).replace('//', '/'), # STRONGHOLD_PUBLIC_URLS=(r'^captcha/', ), STRONGHOLD_PUBLIC_NAMED_URLS=( 'captcha-image', 'captcha-image-2x', 'captcha-audio', 'captcha-refresh', ), TEMPLATES=templates, USE_L10N=True, USE_X_FORWARDED_HOST=cfg.use_x_forwarded_host) django.setup(set_prefix=True) logger.debug('Configured Django with applications - %s', applications) logger.debug('Creating or adding new tables to data file') verbosity = 1 if cfg.debug else 0 django.core.management.call_command('migrate', '--fake-initial', interactive=False, verbosity=verbosity) os.chmod(cfg.store_file, stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)