"""Application configuraiton.""" import logging from os import environ from pathlib import Path # Application secret key, used for the SessionMiddleware APP_SECRET_KEY = environ.get("APP_SECRET_KEY") # Keycloak client details KEYCLOAK_CLIENT_ID = environ.get("KEYCLOAK_CLIENT_ID") KEYCLOAK_CLIENT_SECRET = environ.get("KEYCLOAK_CLIENT_SECRET") KEYCLOAK_DOMAIN = environ.get("KEYCLOAK_DOMAIN") KEYCLOAK_REALM = environ.get("KEYCLOAK_REALM") KEYCLOAK_SCOPES = environ.get("KEYCLOAK_SCOPES", "openid profile email groups") KEYCLOAK_GROUPS_KEY = environ.get("KEYCLOAK_GROUPS_KEY", "groups") KEYCLOAK_ADMINS_GROUP = environ.get("KEYCLOAK_ADMINS_GROUP", "Administrators") KEYCLOAK_BASE_URL = f"https://{KEYCLOAK_DOMAIN}/realms/{KEYCLOAK_REALM}/protocol/openid-connect" # noqa # Redis connection details, our main storage REDIS_DB = environ.get("REDIS_DB") REDIS_HOST = environ.get("REDIS_HOST") REDIS_PORT = environ.get("REDIS_PORT") # How many days do we want the invites to be valid for? INVITE_TIME_LIMIT = int(environ.get("INVITE_TIME_LIMIT", 30)) # Static and template configuration STATIC_DIR = Path(".").absolute() / "keycloak_collective_portal" / "static" TEMPLATE_DIR = Path(".").absolute() / "keycloak_collective_portal" / "templates" # Theme selection APP_THEME = environ.get("APP_THEME", "default") # Log level LOG_LEVEL = environ.get("APP_LOG_LEVEL", "info") if LOG_LEVEL == "info": APP_LOG_LEVEL = logging.INFO elif LOG_LEVEL == "debug": APP_LOG_LEVEL = logging.DEBUG else: APP_LOG_LEVEL = logging.INFO def to_bool(env_var): """Parse a bool from the environment.""" return environ.get(env_var, "False").lower() in ("true", "1", "t") # Automatically log folks in or show the default log in page? AUTOMATICALLY_LOG_IN = to_bool("AUTOMATICALLY_LOG_IN") # Feature flags # Only admins can log in to the interface FEATURE_FLAG_ADMINS_ONLY = to_bool("FEATURE_FLAG_ADMINS_ONLY")