50 lines
1.4 KiB
Python
50 lines
1.4 KiB
Python
import os
|
|
from typing import Optional
|
|
|
|
|
|
class Config:
|
|
"""Application configuration management."""
|
|
|
|
# API Configuration
|
|
API_URL: str = "https://api.kleer.se/v1"
|
|
DEFAULT_COMPANY_ID: str = "1336"
|
|
API_KEY : str = "rjAXm8PM70kqTUt" # To be set via environment variable
|
|
|
|
# Date Formats
|
|
CSV_DATE_FORMAT: str = '%m/%d/%Y'
|
|
API_DATE_FORMAT: str = '%Y-%m-%d'
|
|
XLSX_SHEET_NAME: str = "AGRESSO"
|
|
|
|
# CSV Column Indices
|
|
DATE_COL_INDEX: int = 5
|
|
HOURS_COL_INDEX: int = 10
|
|
|
|
# Business Rules
|
|
MIN_HOURS_THRESHOLD: float = 0.2
|
|
|
|
# Server Configuration
|
|
SERVER_HOST: str = "0.0.0.0"
|
|
SERVER_PORT: int = 8000
|
|
|
|
# Environment Variables
|
|
@staticmethod
|
|
def get_api_key() -> Optional[str]:
|
|
"""Get Kleer API key from environment."""
|
|
return os.getenv('KLEER_API_KEY',Config.API_KEY)
|
|
|
|
@staticmethod
|
|
def get_username() -> str:
|
|
"""Get username from environment with fallback."""
|
|
return os.getenv('KLEER_USERNAME', 'Christopher Juhlin')
|
|
|
|
@staticmethod
|
|
def get_company_id() -> str:
|
|
"""Get company ID from environment with fallback."""
|
|
return os.getenv('KLEER_COMPANY_ID', Config.DEFAULT_COMPANY_ID)
|
|
|
|
@staticmethod
|
|
def validate_config() -> None:
|
|
"""Validate required configuration is present."""
|
|
if not Config.get_api_key():
|
|
raise ValueError("KLEER_API_KEY environment variable is not set")
|