# ruff: noqa: E501 from .base import * # noqa: F403 from .base import DATABASES 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=["alphabetlearning.online"]) # DATABASES # ------------------------------------------------------------------------------ DATABASES["default"]["CONN_MAX_AGE"] = env.int("CONN_MAX_AGE", default=60) # CACHES # ------------------------------------------------------------------------------ # CACHES = { # "default": { # "BACKEND": "django_redis.cache.RedisCache", # "LOCATION": env("REDIS_URL"), # "OPTIONS": { # "CLIENT_CLASS": "django_redis.client.DefaultClient", # # Mimicing memcache behavior. # # https://github.com/jazzband/django-redis#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"] # # 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", # } # # https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings # AWS_S3_MAX_MEMORY_SIZE = env.int( # "DJANGO_AWS_S3_MAX_MEMORY_SIZE", # default=100_000_000, # 100MB # ) # # https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#settings # AWS_S3_REGION_NAME = env("DJANGO_AWS_S3_REGION_NAME", default=None) # # https://django-storages.readthedocs.io/en/latest/backends/amazon-S3.html#cloudfront # AWS_S3_CUSTOM_DOMAIN = env("DJANGO_AWS_S3_CUSTOM_DOMAIN", default=None) # aws_s3_domain = AWS_S3_CUSTOM_DOMAIN or f"{AWS_STORAGE_BUCKET_NAME}.s3.amazonaws.com" # # STATIC & MEDIA # # ------------------------ STORAGES = { # "default": { # "BACKEND": "django.core.files.storage.FileSystemStorage", # }, "staticfiles": { "BACKEND": "whitenoise.storage.CompressedManifestStaticFilesStorage", }, } # MEDIA_URL = f"https://{aws_s3_domain}/media/" # COLLECTFAST_STRATEGY = "collectfast.strategies.boto3.Boto3Strategy" # STATIC_URL = f"https://{aws_s3_domain}/static/" # EMAIL # ------------------------------------------------------------------------------ # https://docs.djangoproject.com/en/dev/ref/settings/#default-from-email DEFAULT_FROM_EMAIL = env( "DJANGO_DEFAULT_FROM_EMAIL", default="pyblackbird-cc ", ) # 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="[pyblackbird-cc] ", ) # ADMIN # ------------------------------------------------------------------------------ # Django Admin URL regex. ADMIN_URL = env("DJANGO_ADMIN_URL") # Anymail # ------------------------------------------------------------------------------ # https://anymail.readthedocs.io/en/stable/installation/#installing-anymail # INSTALLED_APPS += ["anymail"] # https://docs.djangoproject.com/en/dev/ref/settings/#email-backend # https://anymail.readthedocs.io/en/stable/installation/#anymail-settings-reference # https://anymail.readthedocs.io/en/stable/esps/mailgun/ # EMAIL_BACKEND = "anymail.backends.mailgun.EmailBackend" # ANYMAIL = { # "MAILGUN_API_KEY": env("MAILGUN_API_KEY"), # "MAILGUN_SENDER_DOMAIN": env("MAILGUN_DOMAIN"), # "MAILGUN_API_URL": env("MAILGUN_API_URL", default="https://api.mailgun.net/v3"), # } # LOGGING # ------------------------------------------------------------------------------ # https://docs.djangoproject.com/en/dev/ref/settings/#logging # 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, "handlers": { "console": { "level": "DEBUG", "class": "logging.StreamHandler", }, "file": { "level": "DEBUG", "class": "logging.FileHandler", "filename": "/home/django/logfile.log", # Update this path }, }, "loggers": { "django": { "handlers": ["console", "file"], "level": "ERROR", "propagate": True, }, "django.request": { "handlers": ["console", "file"], "level": "ERROR", "propagate": False, }, }, } # LOGGING = { # "version": 1, # "disable_existing_loggers": True, # "formatters": { # "verbose": { # "format": "%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s", # }, # }, # "handlers": { # "console": { # "level": "DEBUG", # "class": "logging.StreamHandler", # "formatter": "verbose", # }, # }, # "root": {"level": "INFO", "handlers": ["console"]}, # "loggers": { # "django.db.backends": { # "level": "ERROR", # "handlers": ["console"], # "propagate": False, # }, # # Errors logged by the SDK itself # "sentry_sdk": {"level": "ERROR", "handlers": ["console"], "propagate": False}, # "django.security.DisallowedHost": { # "level": "ERROR", # "handlers": ["console"], # "propagate": False, # }, # }, # } # # Sentry # # ------------------------------------------------------------------------------ # SENTRY_DSN = env("SENTRY_DSN") # SENTRY_LOG_LEVEL = env.int("DJANGO_SENTRY_LOG_LEVEL", logging.INFO) # sentry_logging = LoggingIntegration( # level=SENTRY_LOG_LEVEL, # Capture info and above as breadcrumbs # event_level=logging.ERROR, # Send errors as events # ) # integrations = [ # sentry_logging, # DjangoIntegration(), # CeleryIntegration(), # RedisIntegration(), # ] # sentry_sdk.init( # dsn=SENTRY_DSN, # integrations=integrations, # environment=env("SENTRY_ENVIRONMENT", default="production"), # traces_sample_rate=env.float("SENTRY_TRACES_SAMPLE_RATE", default=0.0), # ) # Your stuff... # ------------------------------------------------------------------------------