56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			56 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| """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")
 |