lotr-sut/sut/backend/config.py
Fellowship Scholar f6a5823439 init commit
2026-03-29 20:07:56 +00:00

58 lines
2.1 KiB
Python

"""Configuration settings for the Fellowship Quest Tracker application."""
import os
from pathlib import Path
class Config:
"""Base configuration."""
SECRET_KEY = os.environ.get('SECRET_KEY', 'dev-secret-key-change-in-production')
# SQLite database configuration
BASE_DIR = Path(__file__).parent.parent.parent
DATA_DIR = Path('/app/data')
# Ensure data directory exists
try:
DATA_DIR.mkdir(parents=True, exist_ok=True)
except Exception as e:
print(f"Warning: Could not create data directory: {e}")
DATABASE_PATH = DATA_DIR / 'fellowship.db'
# Use environment variable if set, otherwise use default path
db_url = os.environ.get('DATABASE_URL')
if db_url:
SQLALCHEMY_DATABASE_URI = db_url
else:
# Use 4 slashes for absolute path: sqlite:////absolute/path
SQLALCHEMY_DATABASE_URI = f'sqlite:///{DATABASE_PATH}'
SQLALCHEMY_TRACK_MODIFICATIONS = False
# API Configuration
RESTX_MASK_SWAGGER = False
RESTX_VALIDATE = True
RESTX_ERROR_404_HELP = False
# Azure OpenAI configuration (server-side only)
# Load from environment variables—supply via .env file or container env vars
# DO NOT hardcode API keys or other sensitive values
AZURE_OPENAI_ENDPOINT = os.environ.get('AZURE_OPENAI_ENDPOINT', '').strip()
AZURE_OPENAI_API_KEY = os.environ.get('AZURE_OPENAI_API_KEY', '').strip()
AZURE_OPENAI_DEPLOYMENT = os.environ.get('AZURE_OPENAI_DEPLOYMENT', '').strip()
AZURE_OPENAI_API_VERSION = os.environ.get('AZURE_OPENAI_API_VERSION', '2024-11-20').strip()
AZURE_OPENAI_MAX_TOKENS = int(os.environ.get('AZURE_OPENAI_MAX_TOKENS', '500'))
AZURE_OPENAI_TEMPERATURE = float(os.environ.get('AZURE_OPENAI_TEMPERATURE', '0.85'))
class DevelopmentConfig(Config):
"""Development configuration."""
DEBUG = True
FLASK_ENV = 'development'
class ProductionConfig(Config):
"""Production configuration."""
DEBUG = False
FLASK_ENV = 'production'
# Configuration mapping
config = {
'development': DevelopmentConfig,
'production': ProductionConfig,
'default': DevelopmentConfig
}