locate-the-news / backend / app / utils / helpers.py
helpers.py
Raw
"""
Helper utility functions for the application.
"""
from typing import Optional
from datetime import datetime


def format_datetime(dt: datetime, format_str: str = "%Y-%m-%d %H:%M:%S") -> str:
    """
    Formats a datetime object to a string.
    
    Args:
        dt: Datetime object
        format_str: Format string (default: "%Y-%m-%d %H:%M:%S")
        
    Returns:
        Formatted datetime string
    """
    if dt is None:
        return ""
    return dt.strftime(format_str)


def truncate_text(text: str, max_length: int = 100, suffix: str = "...") -> str:
    """
    Truncates text to a maximum length.
    
    Args:
        text: Text to truncate
        max_length: Maximum length
        suffix: Suffix to add if truncated
        
    Returns:
        Truncated text
    """
    if not text:
        return ""
    if len(text) <= max_length:
        return text
    return text[:max_length - len(suffix)] + suffix


def safe_float(value: Optional[str], default: float = 0.0) -> float:
    """
    Safely converts a string to float.
    
    Args:
        value: String value to convert
        default: Default value if conversion fails
        
    Returns:
        Float value or default
    """
    if value is None:
        return default
    try:
        return float(value)
    except (ValueError, TypeError):
        return default


def is_valid_coordinate(lat: float, lon: float) -> bool:
    """
    Checks if coordinates are valid (latitude: -90 to 90, longitude: -180 to 180).
    
    Args:
        lat: Latitude
        lon: Longitude
        
    Returns:
        True if coordinates are valid
    """
    return -90 <= lat <= 90 and -180 <= lon <= 180