AdGenesis-App / core /settings.py
userIdc2024's picture
Update core/settings.py
3d81e4d verified
import os
from typing import Dict, Any, Optional
from dotenv import dotenv_values
from pydantic import BaseModel, ConfigDict
from pydantic_settings import BaseSettings
def load_env_config():
# Try to load from .env file first, then fall back to environment variables
env_file_config = dotenv_values()
env_vars = dict(os.environ)
# Merge .env file values with environment variables (env vars take precedence)
return {**env_file_config, **env_vars}
def get_config() -> Dict[str, Any]:
env_config = load_env_config()
config_model = GlobalConfig.model_construct()
final_config = {**config_model.model_dump(), **env_config}
return final_config
class AppConfig(BaseModel):
"""Application configurations."""
app_name: str = "Creative AdGenesis"
app_version: str = "0.1.0"
app_description: str = (
"Creative AdGenesis"
)
debug_mode: bool = False
class GlobalConfig(BaseSettings):
"""Typed global core object."""
APP_CONFIG: AppConfig = AppConfig()
model_config = ConfigDict(extra="ignore")
# Environment
APP_ENV: Optional[str] = "dev"
DEBUG: Optional[bool] = False
MONGO_DB: Optional[str] = None
MONGO_URI: Optional[str] = None
# Cloudflare R2
R2_BUCKET_NAME: Optional[str] = None
R2_ACCESS_KEY: Optional[str] = None
R2_SECRET_KEY: Optional[str] = None
R2_ENDPOINT: Optional[str] = None
# OpenAI
OPENAI_API_KEY: Optional[str] = None
# Replicate
REPLICATE_API_KEY: Optional[str] = None
GEMINI_API_KEY: Optional[str] = None
# Custom
NEW_BASE: Optional[str] = None
# Load configurations
config_data = get_config()
cnf = GlobalConfig(**config_data)
app_cnf = cnf.APP_CONFIG