From 909d8bd492f6819d2e2d2b7c73123fbdb1ca033f Mon Sep 17 00:00:00 2001 From: Michael Leinartas Date: Mon, 21 May 2012 16:34:37 -0500 Subject: [PATCH] Separate Django settings so they may be overridden This fixes problems with the prior approach which broke manage.py --- webapp/graphite/app_settings.py | 95 +++++++++++++++++++++++ webapp/graphite/local_settings.py.example | 12 +-- webapp/graphite/settings.py | 85 ++------------------ 3 files changed, 104 insertions(+), 88 deletions(-) create mode 100644 webapp/graphite/app_settings.py diff --git a/webapp/graphite/app_settings.py b/webapp/graphite/app_settings.py new file mode 100644 index 000000000..4dff3e9af --- /dev/null +++ b/webapp/graphite/app_settings.py @@ -0,0 +1,95 @@ +"""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 django import VERSION as DJANGO_VERSION +from os.path import dirname, join, abspath + +ADMINS = () +MANAGERS = ADMINS + +TEMPLATE_DIRS = ( + join(dirname( abspath(__file__) ), 'templates'), +) + +#Django settings below, do not touch! +APPEND_SLASH = False +TEMPLATE_DEBUG = False +CACHE_BACKEND = "dummy:///" + +# Language code for this installation. All choices can be found here: +# http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes +# http://blogs.law.harvard.edu/tech/stories/storyReader$15 +LANGUAGE_CODE = 'en-us' + +SITE_ID = 1 + +# Absolute path to the directory that holds media. + +MEDIA_ROOT = '' + +# URL that handles the media served from MEDIA_ROOT. +# Example: "http://media.lawrence.com" +MEDIA_URL = '' + +# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a +# trailing slash. +# Examples: "http://foo.com/media/", "/media/". +ADMIN_MEDIA_PREFIX = '/media/' + +# Make this unique, and don't share it with anybody. +SECRET_KEY = '' + +# List of callables that know how to import templates from various sources. +#XXX Compatibility for Django 1.1. To be removed after 0.9.10 +if DJANGO_VERSION < (1,2): + TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.load_template_source', + 'django.template.loaders.app_directories.load_template_source', + ) +else: + TEMPLATE_LOADERS = ( + 'django.template.loaders.filesystem.Loader', + 'django.template.loaders.app_directories.Loader', + ) + +MIDDLEWARE_CLASSES = ( + 'django.middleware.common.CommonMiddleware', + 'django.middleware.gzip.GZipMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', +) + +ROOT_URLCONF = 'graphite.urls' + +INSTALLED_APPS = ( + 'graphite.metrics', + 'graphite.render', + 'graphite.cli', + 'graphite.browser', + 'graphite.composer', + 'graphite.account', + 'graphite.dashboard', + 'graphite.whitelist', + 'graphite.events', + 'django.contrib.auth', + 'django.contrib.sessions', + 'django.contrib.admin', + 'django.contrib.contenttypes', + 'tagging', +) + +AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend'] + +_APP_SETTINGS_LOADED = True diff --git a/webapp/graphite/local_settings.py.example b/webapp/graphite/local_settings.py.example index 01ab89dd9..81f2d8a2c 100644 --- a/webapp/graphite/local_settings.py.example +++ b/webapp/graphite/local_settings.py.example @@ -3,13 +3,6 @@ # # Additional customizations to Django settings can be added to this file as well -# Make settings.py variables available for modification, avoiding circular import -try: - LOCAL_SETTINGS -except NameError: - from graphite.settings import * - LOCAL_SETTINGS = True - ##################################### # General Configuration # ##################################### @@ -203,6 +196,7 @@ except NameError: ##################################### # Additional Django Settings # ##################################### -# Place custom additions and overrides of Django settings (middlewares, etc) here - +# Uncomment the following line for direct access to Django settings such as +# MIDDLEWARE_CLASSES or APPS +#from graphite.app_settings import * diff --git a/webapp/graphite/settings.py b/webapp/graphite/settings.py index 5cd1be7f6..d76e5f21e 100644 --- a/webapp/graphite/settings.py +++ b/webapp/graphite/settings.py @@ -15,13 +15,14 @@ # DO NOT MODIFY THIS FILE DIRECTLY - use local_settings.py instead import sys, os from django import VERSION as DJANGO_VERSION -from os.path import join, dirname, abspath +from os.path import join try: import rrdtool except ImportError: rrdtool = False +_APP_SETTINGS_LOADED = True WEBAPP_VERSION = '0.9.10-pre2' DEBUG = False JAVASCRIPT_DEBUG = False @@ -102,92 +103,18 @@ DATABASE_HOST = '' # Set to empty string for localhost. Not used with sqlite3. DATABASE_PORT = '' # Set to empty string for default. Not used with sqlite3. -ADMINS = () -MANAGERS = ADMINS - -TEMPLATE_DIRS = ( - join(WEB_DIR, 'templates'), -) - # If using rrdcached, set to the address or socket of the daemon FLUSHRRDCACHED = '' -#Django settings below, do not touch! -APPEND_SLASH = False -TEMPLATE_DEBUG = DEBUG -CACHE_BACKEND = "dummy:///" - -# Language code for this installation. All choices can be found here: -# http://www.w3.org/TR/REC-html40/struct/dirlang.html#langcodes -# http://blogs.law.harvard.edu/tech/stories/storyReader$15 -LANGUAGE_CODE = 'en-us' - -SITE_ID = 1 - -# Absolute path to the directory that holds media. - -MEDIA_ROOT = '' - -# URL that handles the media served from MEDIA_ROOT. -# Example: "http://media.lawrence.com" -MEDIA_URL = '' - -# URL prefix for admin media -- CSS, JavaScript and images. Make sure to use a -# trailing slash. -# Examples: "http://foo.com/media/", "/media/". -ADMIN_MEDIA_PREFIX = '/media/' - -# Make this unique, and don't share it with anybody. -SECRET_KEY = '' - -# List of callables that know how to import templates from various sources. -#XXX Compatibility for Django 1.1. To be removed after 0.9.10 -if DJANGO_VERSION < (1,2): - TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.load_template_source', - 'django.template.loaders.app_directories.load_template_source', - ) -else: - TEMPLATE_LOADERS = ( - 'django.template.loaders.filesystem.Loader', - 'django.template.loaders.app_directories.Loader', - ) - -MIDDLEWARE_CLASSES = ( - 'django.middleware.common.CommonMiddleware', - 'django.middleware.gzip.GZipMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', -) - -ROOT_URLCONF = 'graphite.urls' - -INSTALLED_APPS = ( - 'graphite.metrics', - 'graphite.render', - 'graphite.cli', - 'graphite.browser', - 'graphite.composer', - 'graphite.account', - 'graphite.dashboard', - 'graphite.whitelist', - 'graphite.events', - 'django.contrib.auth', - 'django.contrib.sessions', - 'django.contrib.admin', - 'django.contrib.contenttypes', - 'tagging', -) - -AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend'] - - -## Pull in overrides from local_settings.py +## Load our local_settings try: from graphite.local_settings import * except ImportError: print >> sys.stderr, "Could not import graphite.local_settings, using defaults!" +## Load Django settings if they werent picked up in local_settings +if not _APP_SETTINGS_LOADED: + from graphite.app_settings import * ## Set config dependent on flags set in local_settings # Path configuration