Skip to content
Snippets Groups Projects
base.py 5.54 KiB
Newer Older
  • Learn to ignore specific revisions
  • Todd Dembrey's avatar
    Todd Dembrey committed
    """
    Django settings for opentech project.
    """
    
    # Build paths inside the project like this: os.path.join(BASE_DIR, ...)
    import os
    
    PROJECT_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
    BASE_DIR = os.path.dirname(PROJECT_DIR)
    
    
    # Application definition
    
    INSTALLED_APPS = [
    
    Todd Dembrey's avatar
    Todd Dembrey committed
        'opentech.apply',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
        'opentech.categories',
        'opentech.esi',
        'opentech.forms',
        'opentech.home',
        'opentech.images',
        'opentech.navigation',
        'opentech.search',
        'opentech.utils',
    
        'wagtail.contrib.postgres_search',
        'wagtail.contrib.settings',
        'wagtail.contrib.wagtailsearchpromotions',
        'wagtail.wagtailforms',
        'wagtail.wagtailredirects',
        'wagtail.wagtailembeds',
        'wagtail.wagtailsites',
        'wagtail.wagtailusers',
        'wagtail.wagtailsnippets',
        'wagtail.wagtaildocs',
        'wagtail.wagtailimages',
        'wagtail.wagtailsearch',
        'wagtail.wagtailadmin',
        'wagtail.wagtailcore',
    
        'modelcluster',
        'taggit',
        'django_extensions',
        'captcha',
        'wagtailcaptcha',
    
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'django.contrib.sitemaps',
    ]
    
    MIDDLEWARE_CLASSES = [
        'django.middleware.security.SecurityMiddleware',
        'django.contrib.sessions.middleware.SessionMiddleware',
        'django.middleware.common.CommonMiddleware',
        'django.middleware.csrf.CsrfViewMiddleware',
        'django.contrib.auth.middleware.AuthenticationMiddleware',
        'django.contrib.messages.middleware.MessageMiddleware',
        'django.middleware.clickjacking.XFrameOptionsMiddleware',
    
        'wagtail.wagtailcore.middleware.SiteMiddleware',
        'wagtail.wagtailredirects.middleware.RedirectMiddleware',
        'opentech.esi.middleware.ESIMiddleware',
    ]
    
    ROOT_URLCONF = 'opentech.urls'
    
    TEMPLATES = [
        {
            'BACKEND': 'django.template.backends.django.DjangoTemplates',
            'DIRS': [
                os.path.join(PROJECT_DIR, 'templates'),
            ],
            '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',
                    'wagtail.contrib.settings.context_processors.settings',
                    'opentech.utils.context_processors.global_vars',
                ],
            },
        },
    ]
    
    WSGI_APPLICATION = 'opentech.wsgi.application'
    
    
    # Database
    # https://docs.djangoproject.com/en/stable/ref/settings/#databases
    
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql_psycopg2',
            'NAME': 'opentech',
        }
    }
    
    
    # Cache
    # Use database cache as the cache backend
    
    CACHES = {
        'default': {
            'BACKEND': 'django.core.cache.backends.db.DatabaseCache',
            'LOCATION': 'database_cache',
        }
    }
    
    
    # Search
    
    WAGTAILSEARCH_BACKENDS = {
        'default': {
            'BACKEND': 'wagtail.contrib.postgres_search.backend',
        },
    }
    
    
    # Password validation
    # https://docs.djangoproject.com/en/stable/ref/settings/#auth-password-validators
    
    AUTH_PASSWORD_VALIDATORS = [
        {
            'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
        },
        {
            'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
        },
    ]
    
    
    # Internationalization
    # https://docs.djangoproject.com/en/stable/topics/i18n/
    
    LANGUAGE_CODE = 'en-gb'
    
    TIME_ZONE = 'Europe/London'
    
    USE_I18N = True
    
    USE_L10N = True
    
    USE_TZ = True
    
    
    # Static files (CSS, JavaScript, Images)
    # https://docs.djangoproject.com/en/stable/howto/static-files/
    
    STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.ManifestStaticFilesStorage'
    
    STATICFILES_DIRS = [
        os.path.join(PROJECT_DIR, 'static'),
    ]
    
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    STATIC_URL = '/static/'
    
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    MEDIA_URL = '/media/'
    
    
    # Logging
    
    LOGGING = {
        'version': 1,
        'disable_existing_loggers': False,
        'handlers': {
            'mail_admins': {
                'level': 'ERROR',
                'class': 'django.utils.log.AdminEmailHandler',
                'formatter': 'verbose',
            },
            'console': {
                'level': 'ERROR',
                'class': 'logging.StreamHandler',
                'formatter': 'verbose',
            }
        },
        'formatters': {
            'verbose': {
                'format': '[%(asctime)s] (%(process)d/%(thread)d) %(name)s %(levelname)s: %(message)s'
            }
        },
        'loggers': {
            'opentech': {
                'handlers': [],
                'level': 'INFO',
                'propagate': False,
            },
            'wagtail': {
                'handlers': [],
                'level': 'INFO',
                'propagate': False,
            },
            'django.request': {
                'handlers': ['mail_admins', 'console'],
                'level': 'ERROR',
                'propagate': False,
            },
            'django.security': {
                'handlers': ['mail_admins'],
                'level': 'ERROR',
                'propagate': False,
            },
        },
    }
    
    
    # Wagtail settings
    
    WAGTAIL_SITE_NAME = "opentech.fund"
    
    WAGTAILIMAGES_IMAGE_MODEL = "images.CustomImage"
    WAGTAILIMAGES_FEATURE_DETECTION_ENABLED = False
    
    PASSWORD_REQUIRED_TEMPLATE = 'password_required.html'
    
    DEFAULT_PER_PAGE = 20
    
    ESI_ENABLED = False
    
    # Custom settings
    
    ENABLE_STYLEGUIDE = False