Source code for protocolo.config

"""
Configuration module for loading environment variables.
This module uses python-dotenv to load variables from a .env file.
"""
import os
from pathlib import Path
from dotenv import load_dotenv

# Get the project root directory (one level up from protocolo folder)
PROJECT_ROOT = Path(__file__).parent.parent

# Load environment variables from .env file
env_path = PROJECT_ROOT / '.env'
load_dotenv(dotenv_path=env_path)

# USGS API Credentials
USGS_USERNAME = os.getenv('USGS_USERNAME')
USGS_PASSWORD = os.getenv('USGS_PASSWORD')

# PostgreSQL Database Configuration
DB_PARAMS = {
    'host': os.getenv('DB_HOST'),
    'dbname': os.getenv('DB_NAME'),
    'user': os.getenv('DB_USER'),
    'password': os.getenv('DB_PASSWORD')
}

# SSH Configuration
SSH_USER = os.getenv('SSH_USER')
SSH_KEY_PATH = os.getenv('SSH_KEY_PATH')

# Server Configuration
SERVER_HOSTS = {
    os.getenv('SERVER_HOST_1', '10.17.14.84'): os.getenv('SERVER_PATH', '/srv/productos_recibidos_last'),
    os.getenv('SERVER_HOST_2', '5.134.118.83'): os.getenv('SERVER_PATH', '/srv/productos_recibidos_last')
}

# Email Recipients
EMAIL_RECIPIENTS = os.getenv('EMAIL_RECIPIENTS', '').split(',') if os.getenv('EMAIL_RECIPIENTS') else []

# GeoNetwork Configuration
GEONETWORK_USERNAME = os.getenv('GEONETWORK_USERNAME')
GEONETWORK_PASSWORD = os.getenv('GEONETWORK_PASSWORD')
GEONETWORK_SERVER = os.getenv('GEONETWORK_SERVER', 'https://goyas.csic.es/geonetwork')

# Validation: Check if critical variables are loaded
[docs] def validate_config(): """Validate that critical environment variables are loaded.""" critical_vars = { 'USGS_USERNAME': USGS_USERNAME, 'USGS_PASSWORD': USGS_PASSWORD, } missing_vars = [var for var, value in critical_vars.items() if not value] if missing_vars: raise ValueError( f"Missing required environment variables: {', '.join(missing_vars)}. " f"Please check your .env file at {env_path}" )