Supprimer settings.py
This commit is contained in:
parent
d72b37f46f
commit
7c3356f456
446
settings.py
446
settings.py
|
@ -1,446 +0,0 @@
|
||||||
"""Copyright 2008 Orbitz WorldWide
|
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
you may not use this file except in compliance with the License.
|
|
||||||
You may obtain a copy of the License at
|
|
||||||
|
|
||||||
http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
|
|
||||||
Unless required by applicable law or agreed to in writing, software
|
|
||||||
distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
See the License for the specific language governing permissions and
|
|
||||||
limitations under the License."""
|
|
||||||
# Django settings for graphite project.
|
|
||||||
# DO NOT MODIFY THIS FILE DIRECTLY - use local_settings.py instead
|
|
||||||
from __future__ import print_function
|
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
from os.path import abspath, dirname, join
|
|
||||||
from warnings import warn
|
|
||||||
from importlib import import_module
|
|
||||||
|
|
||||||
from django import VERSION as DJANGO_VERSION
|
|
||||||
try:
|
|
||||||
from django.urls import reverse_lazy
|
|
||||||
except ImportError: # Django < 1.10
|
|
||||||
from django.core.urlresolvers import reverse_lazy
|
|
||||||
|
|
||||||
try: # python3
|
|
||||||
from configparser import ConfigParser
|
|
||||||
except ImportError: # python 2
|
|
||||||
from ConfigParser import SafeConfigParser as ConfigParser
|
|
||||||
|
|
||||||
GRAPHITE_WEB_APP_SETTINGS_LOADED = False
|
|
||||||
WEBAPP_VERSION = '1.1.8'
|
|
||||||
DEBUG = False
|
|
||||||
JAVASCRIPT_DEBUG = False
|
|
||||||
|
|
||||||
DATE_FORMAT = '%m/%d'
|
|
||||||
|
|
||||||
# Allow UTF-8 metrics' names
|
|
||||||
UTF8_METRICS = True
|
|
||||||
|
|
||||||
# Filesystem layout
|
|
||||||
WEB_DIR = dirname( abspath(__file__) )
|
|
||||||
WEBAPP_DIR = dirname(WEB_DIR)
|
|
||||||
GRAPHITE_ROOT = dirname(WEBAPP_DIR)
|
|
||||||
# Initialize additional path variables
|
|
||||||
# Defaults for these are set after local_settings is imported
|
|
||||||
STATIC_ROOT = ''
|
|
||||||
STATIC_URL = '/static/'
|
|
||||||
URL_PREFIX = ''
|
|
||||||
CONF_DIR = ''
|
|
||||||
DASHBOARD_CONF = ''
|
|
||||||
GRAPHTEMPLATES_CONF = ''
|
|
||||||
STORAGE_DIR = ''
|
|
||||||
WHITELIST_FILE = ''
|
|
||||||
INDEX_FILE = ''
|
|
||||||
LOG_DIR = ''
|
|
||||||
CERES_DIR = ''
|
|
||||||
WHISPER_DIR = ''
|
|
||||||
RRD_DIR = ''
|
|
||||||
STANDARD_DIRS = []
|
|
||||||
|
|
||||||
# Timeout settings
|
|
||||||
FIND_TIMEOUT = None # default 3.0 see below
|
|
||||||
FETCH_TIMEOUT = None # default 6.0 see below
|
|
||||||
|
|
||||||
# Example of CLUSTER_SERVERS we want to generate
|
|
||||||
# CLUSTER_SERVERS = ["192.168.56.104:80", "192.168.56.105:80"]
|
|
||||||
|
|
||||||
# SHINKEN
|
|
||||||
# If you set clusters server, then this server will be a relay and will read into these storage servers
|
|
||||||
# We are using the /opt/graphite/conf/relay-rules.conf file as reference, only the default section.
|
|
||||||
# * if the read_destinations key exists, we use it directly
|
|
||||||
# * if not, we read the destinations, and we replace all ports by 80
|
|
||||||
_CARBON_RELAY_CONF_FILE = '/opt/graphite/conf/relay-rules.conf'
|
|
||||||
RELAY_WITH_LOCAL_CARBON = False
|
|
||||||
if os.path.exists(_CARBON_RELAY_CONF_FILE):
|
|
||||||
_section = 'default'
|
|
||||||
# First parse it, must be valid
|
|
||||||
relay_config = ConfigParser()
|
|
||||||
relay_config.read(_CARBON_RELAY_CONF_FILE)
|
|
||||||
if not relay_config.has_section('default'):
|
|
||||||
raise Exception('ERROR: the file %s do not have a default section, cannot parse it.' % _CARBON_RELAY_CONF_FILE)
|
|
||||||
# * read_destinations: directly read options, just split by ,
|
|
||||||
carbon_destinations = ''
|
|
||||||
if relay_config.has_option(_section, 'read_destinations'):
|
|
||||||
destinations = relay_config.get(_section, 'read_destinations')
|
|
||||||
CLUSTER_SERVERS = [s.strip() for s in destinations.split(',') if s.strip()] # there will be space after the ,
|
|
||||||
elif relay_config.has_option(_section, 'destinations'):
|
|
||||||
carbon_destinations = destinations = relay_config.get(_section, 'destinations').split(',')
|
|
||||||
CLUSTER_SERVERS = []
|
|
||||||
for destination in destinations:
|
|
||||||
destination = destination.strip() # there will be space after the ,
|
|
||||||
if destination == '':
|
|
||||||
continue
|
|
||||||
destination_addr = destination.split(':')[0] # always exists
|
|
||||||
CLUSTER_SERVERS.append('%s:80' % destination_addr)
|
|
||||||
else:
|
|
||||||
raise Exception('ERROR: the file %s do not have read_destinations nor a restinations key in its default section, cannot parse it.' % _CARBON_RELAY_CONF_FILE)
|
|
||||||
|
|
||||||
|
|
||||||
# SHINKEN
|
|
||||||
def set_relay_with_local_carbon():
|
|
||||||
import socket
|
|
||||||
from six.moves.urllib.parse import urlsplit
|
|
||||||
|
|
||||||
def is_local_interface(host):
|
|
||||||
is_ipv6 = False
|
|
||||||
if ':' not in host:
|
|
||||||
pass
|
|
||||||
elif host.count(':') == 1:
|
|
||||||
host = host.split(':', 1)[0]
|
|
||||||
else:
|
|
||||||
is_ipv6 = True
|
|
||||||
|
|
||||||
if host.find('[', 0, 2) != -1:
|
|
||||||
last_bracket_position = host.rfind(']')
|
|
||||||
last_colon_position = host.rfind(':')
|
|
||||||
if last_colon_position > last_bracket_position:
|
|
||||||
host = host.rsplit(':', 1)[0]
|
|
||||||
host = host.strip('[]')
|
|
||||||
|
|
||||||
try:
|
|
||||||
if is_ipv6:
|
|
||||||
sock = socket.socket(socket.AF_INET6, socket.SOCK_DGRAM)
|
|
||||||
else:
|
|
||||||
sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
|
|
||||||
sock.bind((host, 0))
|
|
||||||
except socket.error:
|
|
||||||
return False
|
|
||||||
finally:
|
|
||||||
sock.close()
|
|
||||||
|
|
||||||
return True
|
|
||||||
|
|
||||||
global RELAY_WITH_LOCAL_CARBON
|
|
||||||
|
|
||||||
for host in CLUSTER_SERVERS:
|
|
||||||
if host.startswith('http://') or host.startswith('https://'):
|
|
||||||
parsed = urlsplit(host)
|
|
||||||
else:
|
|
||||||
scheme = 'https'
|
|
||||||
parsed = urlsplit(scheme + '://' + host)
|
|
||||||
if is_local_interface(parsed.netloc):
|
|
||||||
RELAY_WITH_LOCAL_CARBON = True
|
|
||||||
break
|
|
||||||
|
|
||||||
|
|
||||||
set_relay_with_local_carbon()
|
|
||||||
else: # default install, no carbon relay configured
|
|
||||||
CLUSTER_SERVERS = []
|
|
||||||
|
|
||||||
# Worker Pool
|
|
||||||
USE_WORKER_POOL = True
|
|
||||||
POOL_MAX_WORKERS = 10
|
|
||||||
|
|
||||||
# This settings control whether https is used to communicate between cluster members
|
|
||||||
INTRACLUSTER_HTTPS = False
|
|
||||||
REMOTE_FIND_TIMEOUT = None # Replaced by FIND_TIMEOUT
|
|
||||||
REMOTE_FETCH_TIMEOUT = None # Replaced by FETCH_TIMEOUT
|
|
||||||
REMOTE_RETRY_DELAY = 60.0
|
|
||||||
REMOTE_EXCLUDE_LOCAL = False
|
|
||||||
STORE_FAIL_ON_ERROR = False
|
|
||||||
REMOTE_STORE_MERGE_RESULTS = True
|
|
||||||
REMOTE_STORE_FORWARD_HEADERS = []
|
|
||||||
REMOTE_STORE_USE_POST = False
|
|
||||||
REMOTE_BUFFER_SIZE = 1024 * 1024 # Set to 0 to prevent streaming deserialization
|
|
||||||
|
|
||||||
# Carbonlink settings
|
|
||||||
CARBON_METRIC_PREFIX='carbon'
|
|
||||||
CARBONLINK_HOSTS = ["127.0.0.1:7002"]
|
|
||||||
CARBONLINK_TIMEOUT = 1.0
|
|
||||||
CARBONLINK_HASHING_KEYFUNC = None
|
|
||||||
CARBONLINK_HASHING_TYPE = 'carbon_ch'
|
|
||||||
CARBONLINK_RETRY_DELAY = 15
|
|
||||||
CARBONLINK_PICKLE_PROTOCOL = -1
|
|
||||||
REPLICATION_FACTOR = 1
|
|
||||||
|
|
||||||
# Cache settings.
|
|
||||||
MEMCACHE_HOSTS = []
|
|
||||||
MEMCACHE_KEY_PREFIX = ''
|
|
||||||
MEMCACHE_OPTIONS = {}
|
|
||||||
CACHES={}
|
|
||||||
FIND_CACHE_DURATION = 300
|
|
||||||
FIND_TOLERANCE = 2 * FIND_CACHE_DURATION
|
|
||||||
DEFAULT_CACHE_DURATION = 60 #metric data and graphs are cached for one minute by default
|
|
||||||
DEFAULT_CACHE_POLICY = []
|
|
||||||
|
|
||||||
# this setting controls the default xFilesFactor used for query-time aggregration
|
|
||||||
DEFAULT_XFILES_FACTOR = 0
|
|
||||||
|
|
||||||
# These can also be configured using:
|
|
||||||
# https://docs.djangoproject.com/en/1.11/topics/logging/
|
|
||||||
LOG_RENDERING_PERFORMANCE = False
|
|
||||||
LOG_CACHE_PERFORMANCE = False
|
|
||||||
LOG_INFO_PERFORMANCE = True
|
|
||||||
LOG_ROTATION = True
|
|
||||||
LOG_ROTATION_COUNT = 1
|
|
||||||
|
|
||||||
LOG_FILE_INFO = 'info.log'
|
|
||||||
LOG_FILE_EXCEPTION = 'exception.log'
|
|
||||||
LOG_FILE_CACHE = 'cache.log'
|
|
||||||
LOG_FILE_RENDERING = 'rendering.log'
|
|
||||||
|
|
||||||
MAX_FETCH_RETRIES = 2
|
|
||||||
|
|
||||||
# This settings limit metrics find to prevent from too large query
|
|
||||||
METRICS_FIND_WARNING_THRESHOLD = float('Inf') # Print a warning if more than X metrics are returned
|
|
||||||
METRICS_FIND_FAILURE_THRESHOLD = float('Inf') # Fail if more than X metrics are returned
|
|
||||||
|
|
||||||
#Local rendering settings
|
|
||||||
RENDER_TRIM_RECENT_IN_AGGREGATE = False #if True, set most recent datapoints to None if prior datapoint was not None
|
|
||||||
|
|
||||||
#Remote rendering settings
|
|
||||||
REMOTE_RENDERING = False #if True, rendering is delegated to RENDERING_HOSTS
|
|
||||||
RENDERING_HOSTS = []
|
|
||||||
REMOTE_RENDER_CONNECT_TIMEOUT = 1.0
|
|
||||||
|
|
||||||
#Miscellaneous settings
|
|
||||||
DOCUMENTATION_VERSION = 'latest' if 'dev' in WEBAPP_VERSION else WEBAPP_VERSION
|
|
||||||
DOCUMENTATION_URL = 'https://graphite.readthedocs.io/en/{}/'.format(DOCUMENTATION_VERSION)
|
|
||||||
ALLOW_ANONYMOUS_CLI = True
|
|
||||||
LEGEND_MAX_ITEMS = 10
|
|
||||||
RRD_CF = 'AVERAGE'
|
|
||||||
STORAGE_FINDERS = (
|
|
||||||
'graphite.finders.remote.RemoteFinder',
|
|
||||||
'graphite.finders.standard.StandardFinder',
|
|
||||||
'graphite.finders.shinken_enterprise.ShinkenEnterpriseFinder',
|
|
||||||
)
|
|
||||||
|
|
||||||
# TagDB settings
|
|
||||||
TAGDB = 'graphite.tags.localdatabase.LocalDatabaseTagDB'
|
|
||||||
|
|
||||||
TAGDB_CACHE_DURATION = 60
|
|
||||||
|
|
||||||
TAGDB_AUTOCOMPLETE_LIMIT = 100
|
|
||||||
|
|
||||||
TAGDB_REDIS_HOST = 'localhost'
|
|
||||||
TAGDB_REDIS_PORT = 6379
|
|
||||||
TAGDB_REDIS_DB = 0
|
|
||||||
TAGDB_REDIS_PASSWORD = ''
|
|
||||||
|
|
||||||
TAGDB_HTTP_URL = ''
|
|
||||||
TAGDB_HTTP_USER = ''
|
|
||||||
TAGDB_HTTP_PASSWORD = ''
|
|
||||||
TAGDB_HTTP_AUTOCOMPLETE = False
|
|
||||||
|
|
||||||
# Function plugins
|
|
||||||
FUNCTION_PLUGINS = []
|
|
||||||
|
|
||||||
|
|
||||||
MIDDLEWARE = ()
|
|
||||||
if DJANGO_VERSION < (1, 10):
|
|
||||||
MIDDLEWARE_CLASSES = MIDDLEWARE
|
|
||||||
MAX_TAG_LENGTH = 50
|
|
||||||
AUTO_REFRESH_INTERVAL = 60
|
|
||||||
|
|
||||||
#Authentication settings
|
|
||||||
USE_LDAP_AUTH = False
|
|
||||||
LDAP_SERVER = "" # "ldapserver.mydomain.com"
|
|
||||||
LDAP_PORT = 389
|
|
||||||
LDAP_USE_TLS = False
|
|
||||||
LDAP_SEARCH_BASE = "" # "OU=users,DC=mydomain,DC=com"
|
|
||||||
LDAP_BASE_USER = "" # "CN=some_readonly_account,DC=mydomain,DC=com"
|
|
||||||
LDAP_BASE_PASS = "" # "my_password"
|
|
||||||
LDAP_USER_QUERY = "" # "(username=%s)" For Active Directory use "(sAMAccountName=%s)"
|
|
||||||
LDAP_URI = None
|
|
||||||
LDAP_USER_DN_TEMPLATE = None
|
|
||||||
|
|
||||||
#Set this to True to delegate authentication to the web server
|
|
||||||
USE_REMOTE_USER_AUTHENTICATION = False
|
|
||||||
REMOTE_USER_BACKEND = "" # Provide an alternate or subclassed backend
|
|
||||||
REMOTE_USER_MIDDLEWARE = "" # Provide an alternate or subclassed middleware
|
|
||||||
AUTHENTICATION_BACKENDS=[]
|
|
||||||
|
|
||||||
# Django 1.5 requires this so we set a default but warn the user
|
|
||||||
SECRET_KEY = 'UNSAFE_DEFAULT'
|
|
||||||
|
|
||||||
# Input validation
|
|
||||||
# - When False we still validate the received input parameters, but if validation
|
|
||||||
# detects an issue it only logs an error and doesn't directly reject the request
|
|
||||||
# - When True we reject requests of which the input validation detected an issue with the
|
|
||||||
# provided arguments and return an error message to the user
|
|
||||||
ENFORCE_INPUT_VALIDATION = False
|
|
||||||
|
|
||||||
# headers which shall be added to log statements informing about invalid queries,
|
|
||||||
# this is useful to identify where a query came from.
|
|
||||||
# The dict is keyed by the header name and the associated value is a short description
|
|
||||||
# of the header which will be used in the log statement, for example:
|
|
||||||
# {'X-FORWARD-FOR': 'forwarded-for'}
|
|
||||||
INPUT_VALIDATION_SOURCE_ID_HEADERS = {}
|
|
||||||
|
|
||||||
# Django 1.5 requires this to be set. Here we default to prior behavior and allow all
|
|
||||||
ALLOWED_HOSTS = [ '*' ]
|
|
||||||
|
|
||||||
# Override to link a different URL for login (e.g. for django_openid_auth)
|
|
||||||
LOGIN_URL = reverse_lazy('account_login')
|
|
||||||
|
|
||||||
# Set the default timezone to UTC
|
|
||||||
TIME_ZONE = 'UTC'
|
|
||||||
|
|
||||||
# Set to True to require authentication to save or delete dashboards
|
|
||||||
DASHBOARD_REQUIRE_AUTHENTICATION = False
|
|
||||||
# Require Django change/delete permissions to save or delete dashboards.
|
|
||||||
# NOTE: Requires DASHBOARD_REQUIRE_AUTHENTICATION to be set
|
|
||||||
DASHBOARD_REQUIRE_PERMISSIONS = False
|
|
||||||
# Name of a group to which the user must belong to save or delete dashboards. Alternative to
|
|
||||||
# DASHBOARD_REQUIRE_PERMISSIONS, particularly useful when using only LDAP (without Admin app)
|
|
||||||
# NOTE: Requires DASHBOARD_REQUIRE_AUTHENTICATION to be set
|
|
||||||
DASHBOARD_REQUIRE_EDIT_GROUP = None
|
|
||||||
|
|
||||||
DATABASES = None
|
|
||||||
|
|
||||||
# If using rrdcached, set to the address or socket of the daemon
|
|
||||||
FLUSHRRDCACHED = ''
|
|
||||||
|
|
||||||
## Load our local_settings
|
|
||||||
SETTINGS_MODULE = os.environ.get('GRAPHITE_SETTINGS_MODULE', 'graphite.local_settings')
|
|
||||||
try:
|
|
||||||
globals().update(import_module(SETTINGS_MODULE).__dict__)
|
|
||||||
except ImportError:
|
|
||||||
print("Could not import {0}, using defaults!".format(SETTINGS_MODULE), file=sys.stderr)
|
|
||||||
|
|
||||||
## Load Django settings if they werent picked up in local_settings
|
|
||||||
if not GRAPHITE_WEB_APP_SETTINGS_LOADED:
|
|
||||||
from graphite.app_settings import * # noqa
|
|
||||||
|
|
||||||
|
|
||||||
STATICFILES_DIRS = (
|
|
||||||
join(WEBAPP_DIR, 'content'),
|
|
||||||
)
|
|
||||||
|
|
||||||
# Handle renamed timeout settings
|
|
||||||
FIND_TIMEOUT = FIND_TIMEOUT or REMOTE_FIND_TIMEOUT or 30.0
|
|
||||||
FETCH_TIMEOUT = FETCH_TIMEOUT or REMOTE_FETCH_TIMEOUT or 300.0
|
|
||||||
|
|
||||||
## Set config dependent on flags set in local_settings
|
|
||||||
# Path configuration
|
|
||||||
if not STATIC_ROOT:
|
|
||||||
STATIC_ROOT = join(GRAPHITE_ROOT, 'static')
|
|
||||||
|
|
||||||
if not CONF_DIR:
|
|
||||||
CONF_DIR = os.environ.get('GRAPHITE_CONF_DIR', join(GRAPHITE_ROOT, 'conf'))
|
|
||||||
if not DASHBOARD_CONF:
|
|
||||||
DASHBOARD_CONF = join(CONF_DIR, 'dashboard.conf')
|
|
||||||
if not GRAPHTEMPLATES_CONF:
|
|
||||||
GRAPHTEMPLATES_CONF = join(CONF_DIR, 'graphTemplates.conf')
|
|
||||||
|
|
||||||
if not STORAGE_DIR:
|
|
||||||
STORAGE_DIR = os.environ.get('GRAPHITE_STORAGE_DIR', join(GRAPHITE_ROOT, 'storage'))
|
|
||||||
if not WHITELIST_FILE:
|
|
||||||
WHITELIST_FILE = join(STORAGE_DIR, 'lists', 'whitelist')
|
|
||||||
if not INDEX_FILE:
|
|
||||||
INDEX_FILE = join(STORAGE_DIR, 'index')
|
|
||||||
if not LOG_DIR:
|
|
||||||
LOG_DIR = join(STORAGE_DIR, 'log', 'webapp')
|
|
||||||
if not WHISPER_DIR:
|
|
||||||
WHISPER_DIR = join(STORAGE_DIR, 'whisper/')
|
|
||||||
if not CERES_DIR:
|
|
||||||
CERES_DIR = join(STORAGE_DIR, 'ceres/')
|
|
||||||
if not RRD_DIR:
|
|
||||||
RRD_DIR = join(STORAGE_DIR, 'rrd/')
|
|
||||||
if not STANDARD_DIRS:
|
|
||||||
try:
|
|
||||||
import whisper # noqa
|
|
||||||
if os.path.exists(WHISPER_DIR):
|
|
||||||
STANDARD_DIRS.append(WHISPER_DIR)
|
|
||||||
except ImportError:
|
|
||||||
print("WARNING: whisper module could not be loaded, whisper support disabled", file=sys.stderr)
|
|
||||||
try:
|
|
||||||
import ceres # noqa
|
|
||||||
if os.path.exists(CERES_DIR):
|
|
||||||
STANDARD_DIRS.append(CERES_DIR)
|
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
try:
|
|
||||||
import rrdtool # noqa
|
|
||||||
if os.path.exists(RRD_DIR):
|
|
||||||
STANDARD_DIRS.append(RRD_DIR)
|
|
||||||
except ImportError:
|
|
||||||
pass
|
|
||||||
|
|
||||||
if DATABASES is None:
|
|
||||||
DATABASES = {
|
|
||||||
'default': {
|
|
||||||
'NAME': join(STORAGE_DIR, 'graphite.db'),
|
|
||||||
'ENGINE': 'django.db.backends.sqlite3',
|
|
||||||
'USER': '',
|
|
||||||
'PASSWORD': '',
|
|
||||||
'HOST': '',
|
|
||||||
'PORT': '',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
# Handle URL prefix in static files handling
|
|
||||||
if URL_PREFIX and not STATIC_URL.startswith(URL_PREFIX):
|
|
||||||
STATIC_URL = '/{0}{1}'.format(URL_PREFIX.strip('/'), STATIC_URL)
|
|
||||||
|
|
||||||
# Default sqlite db file
|
|
||||||
# This is set here so that a user-set STORAGE_DIR is available
|
|
||||||
if 'sqlite3' in DATABASES.get('default',{}).get('ENGINE','') \
|
|
||||||
and not DATABASES.get('default',{}).get('NAME'):
|
|
||||||
DATABASES['default']['NAME'] = join(STORAGE_DIR, 'graphite.db')
|
|
||||||
|
|
||||||
# Caching shortcuts
|
|
||||||
if MEMCACHE_HOSTS:
|
|
||||||
CACHES['default'] = {
|
|
||||||
'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
|
|
||||||
'LOCATION': MEMCACHE_HOSTS,
|
|
||||||
'TIMEOUT': DEFAULT_CACHE_DURATION,
|
|
||||||
'KEY_PREFIX': MEMCACHE_KEY_PREFIX,
|
|
||||||
'OPTIONS': MEMCACHE_OPTIONS,
|
|
||||||
}
|
|
||||||
|
|
||||||
if not CACHES:
|
|
||||||
CACHES = {
|
|
||||||
'default': {
|
|
||||||
'BACKEND': 'django.core.cache.backends.dummy.DummyCache',
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
# Authentication shortcuts
|
|
||||||
if USE_LDAP_AUTH and LDAP_URI is None:
|
|
||||||
LDAP_URI = "ldap://%s:%d/" % (LDAP_SERVER, LDAP_PORT)
|
|
||||||
|
|
||||||
if USE_REMOTE_USER_AUTHENTICATION or REMOTE_USER_BACKEND:
|
|
||||||
if REMOTE_USER_MIDDLEWARE:
|
|
||||||
MIDDLEWARE += (REMOTE_USER_MIDDLEWARE,)
|
|
||||||
else:
|
|
||||||
MIDDLEWARE += ('django.contrib.auth.middleware.RemoteUserMiddleware',)
|
|
||||||
if DJANGO_VERSION < (1, 10):
|
|
||||||
MIDDLEWARE_CLASSES = MIDDLEWARE
|
|
||||||
if REMOTE_USER_BACKEND:
|
|
||||||
AUTHENTICATION_BACKENDS.insert(0,REMOTE_USER_BACKEND)
|
|
||||||
else:
|
|
||||||
AUTHENTICATION_BACKENDS.insert(0,'django.contrib.auth.backends.RemoteUserBackend')
|
|
||||||
|
|
||||||
if USE_LDAP_AUTH:
|
|
||||||
AUTHENTICATION_BACKENDS.insert(0,'graphite.account.ldapBackend.LDAPBackend')
|
|
||||||
|
|
||||||
if SECRET_KEY == 'UNSAFE_DEFAULT':
|
|
||||||
warn('SECRET_KEY is set to an unsafe default. This should be set in local_settings.py for better security')
|
|
||||||
|
|
||||||
USE_TZ = True
|
|
Loading…
Reference in New Issue