Files @ 3826b6fb66e7
Branch filter:

Location: website/conservancy/settings/base.py

bsturmfels
Switch settings to use "the one true way" approach

The advantage of this approach is that the production and dev configurations are
in version control, so there's less opportunity for surprises.

As advocated by Jacob Kaplan-Moss (OSCON 2011) and Two Scoops of Django book.
# Copyright 2005-2008, James Garrison
# Copyright 2010, Bradley M. Kuhn

# This software's license gives you freedom; you can copy, convey,
# propagate, redistribute, modify and/or redistribute modified versions of
# this program under the terms of the GNU Affero General Public License
# (AGPL) as published by the Free Software Foundation (FSF), either
# version 3 of the License, or (at your option) any later version of the
# AGPL published by the FSF.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Affero
# General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program in a file in the toplevel directory called
# "AGPLv3".  If not, see <http://www.gnu.org/licenses/>.

from pathlib import Path

SITE_ID = 2
ROOT_URLCONF = 'conservancy.urls'

REDIRECT_TABLE = {
    'www.sf-conservancy.org': 'sfconservancy.org',
}

LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'default': {
            'format': '%(asctime)s %(levelname)s %(name)s: %(message)s',
            'datefmt': '%Y-%m-%d %H:%M:%S',
        },
    },
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        },
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',
            'formatter': 'default',
        },
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
        # Avoid email notification on DisallowedHost error.
        'django.security.DisallowedHost': {
            'handlers': ['console'],
            'propagate': False,
        },
    },
    'root': {
        'handlers': ['console'],
        'level': 'INFO',
    },
}

INSTALLED_APPS = [
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.admin',
    'django.contrib.messages',
    'django.contrib.humanize',
    'django.contrib.staticfiles',
    'conservancy.blog',
    'conservancy.contacts',
    'conservancy.contractpatch',
    'conservancy.events',
    'conservancy.news',
    'conservancy.staff',
    # 'conservancy.summit_registration',
    'conservancy.worldmap',
    'conservancy.supporters',
    'conservancy.fundgoal',
    'conservancy.assignment',
    'conservancy.fossy',
    'conservancy.podjango',
    'conservancy.usethesource.apps.UseTheSourceConfig',
]

DEFAULT_AUTO_FIELD = 'django.db.models.AutoField'

BASE_DIR = Path(__file__).resolve().parent.parent
TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [
            BASE_DIR / 'templates',
            BASE_DIR / 'static',
        ],
        'APP_DIRS': True,
        'OPTIONS': {
            'context_processors': [
                'django.template.context_processors.debug',
                'django.template.context_processors.request',
                'django.contrib.auth.context_processors.auth',
                'django.contrib.messages.context_processors.messages',
                'conservancy.local_context_processors.host_url',
                'conservancy.local_context_processors.sitefundraiser',
            ]
        }
    }
]

# Internationalization
TIME_ZONE = 'America/New_York'
LANGUAGE_CODE = 'en-us'

STATIC_URL = '/static/'
STATIC_ROOT = BASE_DIR.parent / 'collected_static'
STATICFILES_DIRS = [
    BASE_DIR / 'static',
]

MEDIA_URL = '/media/'

MIDDLEWARE = [
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'conservancy.middleware.ForceCanonicalHostnameMiddleware',
]

USETHESOURCE = {
    'SENDER': 'compliance@sfconservancy.org',
    'LIST_RECIPIENT': 'ccs-review@lists.sfconservancy.org',
}