Skip to content
Snippets Groups Projects
base.py 6.32 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 = [
        'opentech.images',
    
        'opentech.apply.categories',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
        'opentech.apply.funds',
    
        'opentech.apply.home',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
        'opentech.apply.users',
        'opentech.apply.stream_forms',
    
        'opentech.public.esi',
        'opentech.public.forms',
    
        'opentech.public.funds',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
        'opentech.public.home',
        'opentech.public.navigation',
        'opentech.public.news',
        'opentech.public.people',
    
        'opentech.projects',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
        'opentech.public.search',
        'opentech.public.standardpages',
        'opentech.public.utils',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    
    
        'wagtail.contrib.modeladmin',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
        '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',
    ]
    
    
    Todd Dembrey's avatar
    Todd Dembrey committed
        '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',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
        'opentech.public.esi.middleware.ESIMiddleware',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    ]
    
    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',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
                    'opentech.public.utils.context_processors.global_vars',
    
    Todd Dembrey's avatar
    Todd Dembrey committed
                ],
            },
        },
    ]
    
    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_compiled'),
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    ]
    
    STATIC_ROOT = os.path.join(BASE_DIR, 'static')
    STATIC_URL = '/static/'
    
    MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
    MEDIA_URL = '/media/'
    
    
    Dan Braghis's avatar
    Dan Braghis committed
    AUTH_USER_MODEL = 'users.User'
    
    # TODO populate me with the dashboard URL when ready
    
    LOGIN_URL = 'users:login'
    
    LOGIN_REDIRECT_URL = '/'
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    
    # 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"
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    
    WAGTAILIMAGES_IMAGE_MODEL = "images.CustomImage"
    WAGTAILIMAGES_FEATURE_DETECTION_ENABLED = False
    
    
    WAGTAILADMIN_RICH_TEXT_EDITORS = {
        'default': {
            'WIDGET': 'wagtail.wagtailadmin.rich_text.HalloRichTextArea',
            'OPTIONS': {
                'features': [
                    'bold', 'italic',
                    'h3', 'h4', 'h5',
                    'ol', 'ul',
                    'link'
                ]
            }
        },
    }
    
    
    
    Todd Dembrey's avatar
    Todd Dembrey committed
    PASSWORD_REQUIRED_TEMPLATE = 'password_required.html'
    
    DEFAULT_PER_PAGE = 20
    
    ESI_ENABLED = False
    
    # Custom settings
    
    ENABLE_STYLEGUIDE = False