import os
from django import template

register = template.Library()

@register.filter
def muestra_version(clave):
    return os.getenv(clave, '')


@register.filter
def formato_numero(value, decimal_places=2):
    """
    Formatea un número con punto como separador de miles y coma como separador decimal.
    """
    try:
        # Convertir a float
        num = float(value)
        
        # Formato con 2 decimales por defecto
        if decimal_places is None or decimal_places == '':
            decimal_places = 2
        else:
            decimal_places = int(decimal_places)
        
        # Formatear manualmente
        format_string = f"{{:.{decimal_places}f}}"
        formatted = format_string.format(num)
        
        # Separar parte entera y decimal
        parts = formatted.split('.')
        integer_part = parts[0]
        decimal_part = parts[1] if len(parts) > 1 else '0' * decimal_places
        
        # Agregar separadores de miles a la parte entera
        # Manejar números negativos
        if integer_part.startswith('-'):
            sign = '-'
            integer_part = integer_part[1:]
        else:
            sign = ''
        
        # Invertir para procesar de derecha a izquierda
        reversed_int = integer_part[::-1]
        grouped = '.'.join([reversed_int[i:i+3] for i in range(0, len(reversed_int), 3)])
        integer_part = grouped[::-1]
        
        # Combinar con el signo
        integer_part = sign + integer_part
        
        # Retornar con coma como separador decimal
        return f"{integer_part},{decimal_part}"
    except (ValueError, TypeError):
        return value
