From patchwork Tue Apr 7 21:20:54 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Stephen Finucane X-Patchwork-Id: 458820 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.ozlabs.org (lists.ozlabs.org [103.22.144.68]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 7C96D1400A0 for ; Wed, 8 Apr 2015 07:22:19 +1000 (AEST) Received: from lists.ozlabs.org (lists.ozlabs.org [IPv6:2401:3900:2:1::3]) by lists.ozlabs.org (Postfix) with ESMTP id 627A91A0D13 for ; Wed, 8 Apr 2015 07:22:19 +1000 (AEST) X-Original-To: patchwork@lists.ozlabs.org Delivered-To: patchwork@lists.ozlabs.org Received: from BLU004-OMC3S27.hotmail.com (blu004-omc3s27.hotmail.com [65.55.116.102]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by lists.ozlabs.org (Postfix) with ESMTPS id D2F111A0CC1 for ; Wed, 8 Apr 2015 07:21:42 +1000 (AEST) Received: from BLU437-SMTP63 ([65.55.116.73]) by BLU004-OMC3S27.hotmail.com over TLS secured channel with Microsoft SMTPSVC(7.5.7601.22751); Tue, 7 Apr 2015 14:21:38 -0700 X-TMN: [sqWq65ZnAzsXm/U3g8f5gbfv0oF3eqDd] X-Originating-Email: [stephenfinucane@hotmail.com] Message-ID: From: Stephen Finucane To: patchwork@lists.ozlabs.org Subject: [PATCH v5 7/8] settings: Split 'settings.py' into multiple files Date: Tue, 7 Apr 2015 22:20:54 +0100 X-Mailer: git-send-email 2.1.0 In-Reply-To: <1428441655-28561-1-git-send-email-stephenfinucane@hotmail.com> References: <1428441655-28561-1-git-send-email-stephenfinucane@hotmail.com> X-OriginalArrivalTime: 07 Apr 2015 21:21:36.0376 (UTC) FILETIME=[D4314F80:01D07178] MIME-Version: 1.0 X-BeenThere: patchwork@lists.ozlabs.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Patchwork development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: patchwork-bounces+incoming=patchwork.ozlabs.org@lists.ozlabs.org Sender: "Patchwork" 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 --- apps/manage.py | 2 +- apps/patchwork/settings/__init__.py | 0 apps/patchwork/settings/base.py | 115 ++++++++++++++++++++++++++ apps/patchwork/settings/dev.py | 52 ++++++++++++ apps/patchwork/settings/prod.py | 62 ++++++++++++++ apps/settings.py | 159 ------------------------------------ 6 files changed, 230 insertions(+), 160 deletions(-) create mode 100644 apps/patchwork/settings/__init__.py create mode 100644 apps/patchwork/settings/base.py create mode 100644 apps/patchwork/settings/dev.py create mode 100644 apps/patchwork/settings/prod.py delete mode 100644 apps/settings.py 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 diff --git a/apps/patchwork/settings/base.py b/apps/patchwork/settings/base.py new file mode 100644 index 0000000..5440de6 --- /dev/null +++ b/apps/patchwork/settings/base.py @@ -0,0 +1,115 @@ +""" +Base settings for patchwork project. +""" + +import os + +import django + +ROOT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), + os.pardir, os.pardir, os.pardir) + +# +# Core settings +# https://docs.djangoproject.com/en/1.6/ref/settings/#core-settings +# + +# Models + +INSTALLED_APPS = [ + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.sites', + 'django.contrib.admin', + 'django.contrib.staticfiles', + 'patchwork', +] + +# HTTP + +MIDDLEWARE_CLASSES = [ + 'django.middleware.common.CommonMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', +] + +if django.VERSION < (1, 7): + MIDDLEWARE_CLASSES.append('django.middleware.doc.XViewMiddleware') +else: + MIDDLEWARE_CLASSES.append( + 'django.contrib.admindocs.middleware.XViewMiddleware') + +# Globalization + +TIME_ZONE = 'Australia/Canberra' + +LANGUAGE_CODE = 'en-au' + +USE_I18N = True + +# URLs + +ROOT_URLCONF = 'patchwork.urls' + +# Templates + +TEMPLATE_DIRS = ( + os.path.join(ROOT_DIR, 'templates'), +) + + +# +# Auth settings +# https://docs.djangoproject.com/en/1.6/ref/settings/#auth +# + +LOGIN_URL = '/user/login/' +LOGIN_REDIRECT_URL = '/user/' + + +# +# Sites settings +# https://docs.djangoproject.com/en/1.6/ref/settings/#sites +# + +SITE_ID = 1 + + +# +# Static files settings +# https://docs.djangoproject.com/en/1.6/ref/settings/#static-files +# + +STATIC_URL = '/static/' + +STATICFILES_DIRS = [ + os.path.join(ROOT_DIR, 'htdocs'), +] + + +# +# Patchwork settings +# + +DEFAULT_PATCHES_PER_PAGE = 100 +DEFAULT_FROM_EMAIL = 'Patchwork ' + +CONFIRMATION_VALIDITY_DAYS = 7 + +NOTIFICATION_DELAY_MINUTES = 10 +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 +# of patchwork +COMPAT_REDIR = True + +# Set to True to always generate https:// links instead of guessing +# 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 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 diff --git a/apps/settings.py b/apps/settings.py deleted file mode 100644 index 01add3e..0000000 --- a/apps/settings.py +++ /dev/null @@ -1,159 +0,0 @@ -# Django settings for patchwork project. - -import os - -import django - -ROOT_DIR = os.path.join(os.path.dirname(os.path.abspath(__file__)), os.pardir) - -# -# Core settings -# https://docs.djangoproject.com/en/1.6/ref/settings/#core-settings -# - -# Models - -INSTALLED_APPS = ( - 'django.contrib.auth', - 'django.contrib.contenttypes', - 'django.contrib.sessions', - 'django.contrib.sites', - 'django.contrib.admin', - 'django.contrib.staticfiles', - 'patchwork', -) - -# HTTP - -MIDDLEWARE_CLASSES = [ - 'django.middleware.common.CommonMiddleware', - 'django.contrib.sessions.middleware.SessionMiddleware', - 'django.contrib.auth.middleware.AuthenticationMiddleware', - 'django.contrib.messages.middleware.MessageMiddleware', - 'django.middleware.csrf.CsrfViewMiddleware', -] - -if django.VERSION < (1, 7): - MIDDLEWARE_CLASSES.append('django.middleware.doc.XViewMiddleware') -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 - -TIME_ZONE = 'Australia/Canberra' - -LANGUAGE_CODE = 'en-au' - -USE_I18N = True - -# URLs - -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'), -) - - -# -# Auth settings -# https://docs.djangoproject.com/en/1.6/ref/settings/#auth -# - -LOGIN_URL = '/user/login/' -LOGIN_REDIRECT_URL = '/user/' - - -# -# Sites settings -# https://docs.djangoproject.com/en/1.6/ref/settings/#sites -# - -SITE_ID = 1 - - -# -# Static files settings -# https://docs.djangoproject.com/en/1.6/ref/settings/#static-files -# - -STATIC_URL = '/static/' - -STATICFILES_DIRS = [ - os.path.join(ROOT_DIR, 'htdocs'), -] - - -# -# Patchwork settings -# - -DEFAULT_PATCHES_PER_PAGE = 100 -DEFAULT_FROM_EMAIL = 'Patchwork ' - -CONFIRMATION_VALIDITY_DAYS = 7 - -NOTIFICATION_DELAY_MINUTES = 10 -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 -# of patchwork -COMPAT_REDIR = True - -# Set to True to always generate https:// links instead of guessing -# 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