import os from apispec import APISpec from apispec.ext.marshmallow import MarshmallowPlugin def bool_env(name, default=False): return os.environ.get(name, default) in ("1", "True", True) class Settings: JSON_LOGS = bool_env("JSON_LOGS", False) LOGLEVEL = os.environ.get("LOGLEVEL", "INFO") SENTRY_DSN = os.environ.get("SENTRY_DSN") SESSION_COOKIE_SECURE = True SECRET_KEY = os.environ.get("SESSION_SECRET") # Celery CELERY = { "beat_schedule": "", "task_always_eager": bool_env("CELERY_TASK_ALWAYS_EAGER"), } ALLOWED_HOSTS = os.environ.get("ALLOWED_HOSTS", "").split(",") # Atlas auth ATLAS_LOGIN_URL = os.environ.get("ATLAS_LOGIN_URL") ATLAS_LOGOUT_URL = os.environ.get("ATLAS_LOGOUT_URL") ATLAS_REFRESH_TOKEN_URL = os.environ.get("ATLAS_REFRESH_TOKEN_URL") ATLAS_PUBLIC_KEY_URL = os.environ.get("ATLAS_PUBLIC_KEY_URL") ATLAS_ENCODING_ALGORITHM = os.environ.get( "ATLAS_ENCODING_ALGORITHM", "RS256" ) ATLAS_RELATED_CLAIMS_NAMESPACE = os.environ.get( "ATLAS_RELATED_CLAIMS_NAMESPACE", "core-notifications" ) ATLAS_BEARER_TOKEN_COOKIE_NAME = os.environ.get( "ATLAS_BEARER_TOKEN_COOKIE_NAME", "dna_bearer_token" ) ATLAS_REFRESH_TOKEN_COOKIE_NAME = os.environ.get( "ATLAS_REFRESH_TOKEN_COOKIE_NAME", "dna_refresh_token" ) ANALYTICS_USER_ID = "core-notifications" ANALYTICS_USER_NAME = "Test email sending" # DB PGDB_HOST = os.environ.get("PGDB_HOST") PGDB_NAME = os.environ.get("PGDB_NAME") PGDB_PASS = os.environ.get("PGDB_PASS") PGDB_PORT = os.environ.get("PGDB_PORT", "5432") PGDB_USER = os.environ.get("PGDB_USER") SQLALCHEMY_DATABASE_URI = "postgresql://{}:{}@{}:{}/{}".format( PGDB_USER, PGDB_PASS, PGDB_HOST, PGDB_PORT, PGDB_NAME ) SQLALCHEMY_TRACK_MODIFICATIONS = False # mail MAIL_SERVER = os.environ.get("MAIL_SERVER") MAIL_PORT = os.environ.get("MAIL_PORT") MAIL_USE_TLS = os.environ.get("MAIL_USE_TLS", False) MAIL_USE_SSL = os.environ.get("MAIL_USE_SSL", False) MAIL_USERNAME = os.environ.get("MAIL_USERNAME") MAIL_PASSWORD = os.environ.get("MAIL_PASSWORD") MAIL_DEFAULT_SENDER = os.environ.get("MAIL_DEFAULT_SENDER") MAIL_CONFIGURATION_SET = os.environ.get( "MAIL_CONFIGURATION_SET", "cmn-delphi-atlas" ) TASK_RETRY_DELAY = 60 TASK_MAX_RETRIES = 3 TASK_GET_RESULT_TIMEOUT = 0.3 TASK_REACHING_LIMITS_RETRY_DELAY = 60 * 10 FLASK_STATIC_DIGEST_HOST_URL = os.environ.get("STATIC_URL") # APISpec APISPEC_SWAGGER_UI_URL = "/docs/" APISPEC_SWAGGER_URL = "/docs/openapi.json" APISPEC_SPEC = APISpec( title="Core Notifications API", version="v1", info={ "description": "Email notifications service", "license": { "name": "Proprietary", }, }, openapi_version="3.0.2", plugins=[MarshmallowPlugin()], security=[ {"bearerAuth": []}, {"cookieAuth": []}, ], components={ "securitySchemes": { "cookieAuth": { "type": "apiKey", "in": "cookie", "name": "dna_bearer_token", }, "bearerAuth": { "type": "http", "scheme": "bearer", "bearerFormat": "JWT", }, }, }, ) ITEMS_PER_PAGE = 10 # AWS MEDIA_URL = os.environ.get("MEDIA_URL") MEDIA_BUCKET_NAME = os.environ.get("MEDIA_BUCKET_NAME") MEDIA_BUCKET_PATH = os.environ.get("MEDIA_BUCKET_PATH", "images/") AMPLITUDE_API_KEY = os.environ.get("AMPLITUDE_API_KEY") MAX_LINE_LENGTH = 500