summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Finucane <stephenfinucane@hotmail.com>2015-04-07 22:20:54 +0100
committerJeremy Kerr <jk@ozlabs.org>2015-05-03 13:46:52 +0800
commitae639a6a6aea26b0648a0e2d2fd4bccd7a41c791 (patch)
treeeee1eccf8d20895e25cf5c4946071a9e7ce8f5e9
parentd4a2c1f8792f52fec0c881ab38c91635840a50c0 (diff)
downloadpatchwork-ae639a6a6aea26b0648a0e2d2fd4bccd7a41c791.tar.bz2
patchwork-ae639a6a6aea26b0648a0e2d2fd4bccd7a41c791.tar.xz
settings: Split 'settings.py' into multiple files
This will make testing/developing a little easier and prevent people deploying insecure instances. This also adds references to Django documentation in said files (for Django novices) and restructures the files to group them together logically. This allows us to remove the settings file used for tests. Signed-off-by: Stephen Finucane <stephenfinucane@hotmail.com> Signed-off-by: Jeremy Kerr <jk@ozlabs.org>
-rwxr-xr-xapps/manage.py2
-rw-r--r--apps/patchwork/settings/__init__.py0
-rw-r--r--apps/patchwork/settings/base.py (renamed from apps/settings.py)60
-rw-r--r--apps/patchwork/settings/dev.py52
-rw-r--r--apps/patchwork/settings/prod.py62
5 files changed, 123 insertions, 53 deletions
diff --git a/apps/manage.py b/apps/manage.py
index f9726f9..04eac77 100755
--- a/apps/manage.py
+++ b/apps/manage.py
@@ -3,7 +3,7 @@ import os
import sys
if __name__ == "__main__":
- os.environ.setdefault("DJANGO_SETTINGS_MODULE", "settings")
+ os.environ.setdefault("DJANGO_SETTINGS_MODULE", "patchwork.settings.prod")
from django.core.management import execute_from_command_line
diff --git a/apps/patchwork/settings/__init__.py b/apps/patchwork/settings/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/apps/patchwork/settings/__init__.py
diff --git a/apps/settings.py b/apps/patchwork/settings/base.py
index 01add3e..5440de6 100644
--- a/apps/settings.py
+++ b/apps/patchwork/settings/base.py
@@ -1,10 +1,13 @@
-# Django settings for patchwork project.
+"""
+Base settings for patchwork project.
+"""
import os
import django
-ROOT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir)
+ROOT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)),
+ os.pardir, os.pardir, os.pardir)
#
# Core settings
@@ -13,7 +16,7 @@ ROOT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir)
# Models
-INSTALLED_APPS = (
+INSTALLED_APPS = [
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
@@ -21,7 +24,7 @@ INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.staticfiles',
'patchwork',
-)
+]
# HTTP
@@ -38,36 +41,6 @@ if django.VERSION < (1, 7):
else:
MIDDLEWARE_CLASSES.append(
'django.contrib.admindocs.middleware.XViewMiddleware')
- TEST_RUNNER = 'django.test.runner.DiscoverRunner'
-
-# Debugging
-
-DEBUG = True
-
-if django.VERSION >= (1, 7):
- TEST_RUNNER = 'django.test.runner.DiscoverRunner'
-
-# Email
-
-ADMINS = (
- ('Jeremy Kerr', 'jk@ozlabs.org'),
-)
-
-MANAGERS = ADMINS
-
-# Databases
-
-DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.postgresql_psycopg2',
- 'NAME': 'patchwork',
- },
-}
-
-# File Uploads
-
-MEDIA_ROOT = os.path.join(
- ROOT_DIR, 'lib', 'python', 'django', 'contrib', 'admin', 'media')
# Globalization
@@ -81,15 +54,8 @@ USE_I18N = True
ROOT_URLCONF = 'patchwork.urls'
-# Security
-
-# Make this unique, and don't share it with anybody.
-SECRET_KEY = '00000000000000000000000000000000000000000000000000'
-
# Templates
-TEMPLATE_DEBUG = True
-
TEMPLATE_DIRS = (
os.path.join(ROOT_DIR, 'templates'),
)
@@ -139,7 +105,7 @@ NOTIFICATION_FROM_EMAIL = DEFAULT_FROM_EMAIL
# Set to True to enable the Patchwork XML-RPC interface
ENABLE_XMLRPC = False
-# set to True to enable redirections or URLs from previous versions
+# Set to True to enable redirections or URLs from previous versions
# of patchwork
COMPAT_REDIR = True
@@ -147,13 +113,3 @@ COMPAT_REDIR = True
# the scheme based on current access. This is useful if SSL protocol
# is terminated upstream of the server (e.g. at the load balancer)
FORCE_HTTPS_LINKS = False
-
-try:
- from local_settings import *
-except ImportError, ex:
- import sys
- sys.stderr.write(\
- ("settings.py: error importing local settings file:\n" + \
- "\t%s\n" + \
- "Do you have a local_settings.py module?\n") % str(ex))
- raise
diff --git a/apps/patchwork/settings/dev.py b/apps/patchwork/settings/dev.py
new file mode 100644
index 0000000..6e373cc
--- /dev/null
+++ b/apps/patchwork/settings/dev.py
@@ -0,0 +1,52 @@
+"""
+Development settings for patchwork project.
+
+These are also used in unit tests.
+
+Design based on:
+ http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/
+"""
+
+import django
+
+from base import *
+
+#
+# Core settings
+# https://docs.djangoproject.com/en/1.6/ref/settings/#core-settings
+#
+
+# Security
+
+SECRET_KEY = '00000000000000000000000000000000000000000000000000'
+
+# Debugging
+
+DEBUG = True
+
+# Templates
+
+TEMPLATE_DEBUG = True
+
+# Database
+
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.mysql',
+ 'HOST': 'localhost',
+ 'PORT': '',
+ 'USER': os.environ['PW_TEST_DB_USER'],
+ 'PASSWORD': os.environ['PW_TEST_DB_PASS'],
+ 'NAME': 'patchwork',
+ 'TEST_CHARSET': 'utf8',
+ },
+}
+
+if django.VERSION >= (1, 7):
+ TEST_RUNNER = 'django.test.runner.DiscoverRunner'
+
+#
+# Patchwork settings
+#
+
+ENABLE_XMLRPC = True
diff --git a/apps/patchwork/settings/prod.py b/apps/patchwork/settings/prod.py
new file mode 100644
index 0000000..d71f3df
--- /dev/null
+++ b/apps/patchwork/settings/prod.py
@@ -0,0 +1,62 @@
+"""
+Sample production-ready settings for patchwork project.
+
+Most of these are commented out as they will be installation dependent.
+
+Design based on:
+ http://www.revsys.com/blog/2014/nov/21/recommended-django-project-layout/
+"""
+
+from base import *
+
+#
+# Core settings
+# https://docs.djangoproject.com/en/1.6/ref/settings/#core-settings
+#
+
+# Security
+
+# SECRET_KEY = '00000000000000000000000000000000000000000000000000'
+
+# Email
+
+# ADMINS = (
+# ('Jeremy Kerr', 'jk@ozlabs.org'),
+# )
+
+# Database
+
+# DATABASES = {
+# 'default': {
+# 'ENGINE': 'django.db.backends.postgresql_psycopg2',
+# 'NAME': 'patchwork',
+# },
+# }
+
+# File Uploads
+
+# MEDIA_ROOT = os.path.join(
+# ROOT_DIR, 'lib', 'python', 'django', 'contrib', 'admin', 'media')
+
+
+#
+# Static files settings
+# https://docs.djangoproject.com/en/1.6/ref/settings/#static-files
+#
+
+# STATIC_ROOT = '/srv/patchwork/htdocs'
+
+
+#
+# Custom user overrides (for legacy)
+#
+
+try:
+ from local_settings import *
+except ImportError, ex:
+ import sys
+ sys.stderr.write(\
+ ("settings.py: error importing local settings file:\n" + \
+ "\t%s\n" + \
+ "Do you have a local_settings.py module?\n") % str(ex))
+ raise