text: from .base import *  # noqa
  from .base import env
  
  # GENERAL
  # ------------------------------------------------------------------------------
  # https://docs.djangoproject.com/en/dev/ref/settings/#secret-key
  SECRET_KEY = env('DJANGO_SECRET_KEY')
  # https://docs.djangoproject.com/en/dev/ref/settings/#allowed-hosts
  ALLOWED_HOSTS = env.list('DJANGO_ALLOWED_HOSTS', default=['bstargram.com'])
  
  # DATABASES
  # ------------------------------------------------------------------------------
  DATABASES['default'] = env.db('DATABASE_URL')  # noqa F405
  DATABASES['default']['ATOMIC_REQUESTS'] = True  # noqa F405
  DATABASES['default']['CONN_MAX_AGE'] = env.int('CONN_MAX_AGE', default=60)  # noqa F405
  
  # CACHES
  # ------------------------------------------------------------------------------
  CACHES = {
      'default': {
          'BACKEND': 'django_redis.cache.RedisCache',
          'LOCATION': env('REDIS_URL'),
          'OPTIONS': {
              'CLIENT_CLASS': 'django_redis.client.DefaultClient',
              # Mimicing memcache behavior.
              # http://niwinz.github.io/django-redis/latest/#_memcached_exceptions_behavior
              'IGNORE_EXCEPTIONS': True,
          }
      }
  }
  
  # SECURITY
  # ------------------------------------------------------------------------------
  # https://docs.djangoproject.com/en/dev/ref/settings/#secure-proxy-ssl-header
  SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
  # https://docs.djangoproject.com/en/dev/ref/settings/#secure-ssl-redirect
  SECURE_SSL_REDIRECT = env.bool('DJANGO_SECURE_SSL_REDIRECT', default=True)
  # https://docs.djangoproject.com/en/dev/ref/settings/#session-cookie-secure
  SESSION_COOKIE_SECURE = True
  # https://docs.djangoproject.com/en/dev/ref/settings/#csrf-cookie-secure
  CSRF_COOKIE_SECURE = True
  # https://docs.djangoproject.com/en/dev/topics/security/#ssl-https
  # https://docs.djangoproject.com/en/dev/ref/settings/#secure-hsts-seconds
  # TODO: set this to 60 seconds first and then to 518400 once you prove the former works
  SECURE_HSTS_SECONDS = 60
  # https://docs.djangoproject.com/en/dev/ref/settings/#secure-hsts-include-subdomains
  SECURE_HSTS_INCLUDE_SUBDOMAINS = env.bool('DJANGO_SECURE_HSTS_INCLUDE_SUBDOMAINS', default=True)
  # https://docs.djangoproject.com/en/dev/ref/settings/#secure-hsts-preload
  SECURE_HSTS_PRELOAD = env.bool('DJANGO_SECURE_HSTS_PRELOAD', default=True)
  # https://docs.djangoproject.com/en/dev/ref/middleware/#x-content-type-options-nosniff
  SECURE_CONTENT_TYPE_NOSNIFF = env.bool('DJANGO_SECURE_CONTENT_TYPE_NOSNIFF', default=True)
  
  # STORAGES
  # ------------------------------------------------------------------------------
  # https://django-storages.readthedocs.io/en/latest/#installation
  INSTALLED_APPS += ['storages']  # noqa F405
  # https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings
  AWS_ACCESS_KEY_ID = env('DJANGO_AWS_ACCESS_KEY_ID')
  # https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings
  AWS_SECRET_ACCESS_KEY = env('DJANGO_AWS_SECRET_ACCESS_KEY')
  # https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings
  AWS_STORAGE_BUCKET_NAME = env('DJANGO_AWS_STORAGE_BUCKET_NAME')
  # https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings
  AWS_QUERYSTRING_AUTH = False
  # DO NOT change these unless you know what you're doing.
  _AWS_EXPIRY = 60 * 60 * 24 * 7
  # https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings
  AWS_S3_OBJECT_PARAMETERS = {
      'CacheControl': f'max-age={_AWS_EXPIRY}, s-maxage={_AWS_EXPIRY}, must-revalidate',
  }
  
  # STATIC
  # ------------------------
  
  STATICFILES_STORAGE = 'config.settings.production.StaticRootS3Boto3Storage'
  STATIC_URL = f'https://{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com/static/'
  
  # MEDIA
  # ------------------------------------------------------------------------------
  
  # region http://stackoverflow.com/questions/10390244/
  # Full-fledge class: https://stackoverflow.com/a/18046120/104731
  from storages.backends.s3boto3 import S3Boto3Storage  # noqa E402
  
  
  class StaticRootS3Boto3Storage(S3Boto3Storage):
      location = 'static'
  
  
  class MediaRootS3Boto3Storage(S3Boto3Storage):
      location = 'media'
      file_overwrite = False
  
  
  # endregion
  DEFAULT_FILE_STORAGE = 'config.settings.production.MediaRootS3Boto3Storage'
  MEDIA_URL = f'https://{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com/media/'
  
  # TEMPLATES
  # ------------------------------------------------------------------------------
  # https://docs.djangoproject.com/en/dev/ref/settings/#templates
  TEMPLATES[0]['OPTIONS']['loaders'] = [  # noqa F405
      (
          'django.template.loaders.cached.Loader',
          [
              'django.template.loaders.filesystem.Loader',
              'django.template.loaders.app_directories.Loader',
          ]
      ),
  ]
  
  # EMAIL
  # ------------------------------------------------------------------------------
  # https://docs.djangoproject.com/en/dev/ref/settings/#default-from-email
  DEFAULT_FROM_EMAIL = env(
      'DJANGO_DEFAULT_FROM_EMAIL',
      default='bstargram <noreply@bstargram.com>'
  )
  # https://docs.djangoproject.com/en/dev/ref/settings/#server-email
  SERVER_EMAIL = env('DJANGO_SERVER_EMAIL', default=DEFAULT_FROM_EMAIL)
  # https://docs.djangoproject.com/en/dev/ref/settings/#email-subject-prefix
  EMAIL_SUBJECT_PREFIX = env('DJANGO_EMAIL_SUBJECT_PREFIX', default='[bstargram]')
  
  # ADMIN
  # ------------------------------------------------------------------------------
  # Django Admin URL regex.
  ADMIN_URL = env('DJANGO_ADMIN_URL')
  
  # Anymail (Mailgun)
  # ------------------------------------------------------------------------------
  # https://anymail.readthedocs.io/en/stable/installation/#installing-anymail
  INSTALLED_APPS += ['anymail']  # noqa F405
  EMAIL_BACKEND = 'anymail.backends.mailgun.EmailBackend'
  # https://anymail.readthedocs.io/en/stable/installation/#anymail-settings-reference
  ANYMAIL = {
      'MAILGUN_API_KEY': env('MAILGUN_API_KEY'),
      'MAILGUN_SENDER_DOMAIN': env('MAILGUN_DOMAIN')
  }
  
  # Gunicorn
  # ------------------------------------------------------------------------------
  INSTALLED_APPS += ['gunicorn']  # noqa F405
  
  # Collectfast
  # ------------------------------------------------------------------------------
  # https://github.com/antonagestam/collectfast#installation
  INSTALLED_APPS = ['collectfast'] + INSTALLED_APPS  # noqa F405
  AWS_PRELOAD_METADATA = True
  
  
  # LOGGING
  # ------------------------------------------------------------------------------
  # See: https://docs.djangoproject.com/en/dev/ref/settings/#logging
  # A sample logging configuration. The only tangible logging
  # performed by this configuration is to send an email to
  # the site admins on every HTTP 500 error when DEBUG=False.
  # See https://docs.djangoproject.com/en/dev/topics/logging for
  # more details on how to customize your logging configuration.
  LOGGING = {
      'version': 1,
      'disable_existing_loggers': False,
      'filters': {
          'require_debug_false': {
              '()': 'django.utils.log.RequireDebugFalse'
          }
      },
      'formatters': {
          'verbose': {
              'format': '%(levelname)s %(asctime)s %(module)s '
                        '%(process)d %(thread)d %(message)s'
          },
      },
      'handlers': {
          'mail_admins': {
              'level': 'ERROR',
              'filters': ['require_debug_false'],
              'class': 'django.utils.log.AdminEmailHandler'
          },
          'console': {
              'level': 'DEBUG',
              'class': 'logging.StreamHandler',
              'formatter': 'verbose',
          },
      },
      'loggers': {
          'django.request': {
              'handlers': ['mail_admins'],
              'level': 'ERROR',
              'propagate': True
          },
          'django.security.DisallowedHost': {
              'level': 'ERROR',
              'handlers': ['console', 'mail_admins'],
              'propagate': True
          }
      }
  }
  
  
  # Your stuff...
  # ------------------------------------------------------------------------------
  