from flask import g, request
from flask_login import current_user

def permission_context_processor():
    """Context processor simples que disponibiliza informações básicas do usuário"""
    context = {
        'user_can': lambda permission: True,  # Sempre True - controle é no nível de dados
        'user_has_role': lambda role: True,   # Sempre True - controle é no nível de dados  
        'is_admin': False,
        'current_user_data': None
    }
    
    if current_user.is_authenticated:
        context.update({
            'is_admin': getattr(current_user, 'is_admin', False),
            'current_user_data': current_user
        })
    
    return context

def safe_render_helper():
    """Helper que fornece dados seguros para templates"""
    return {
        'safe_data': lambda data, default=None: data if data is not None else (default or [])
    }

def init_template_filters(app):
    """Inicializa filtros de template personalizados"""
    
    @app.template_filter('safe_list')
    def safe_list_filter(value):
        """Garante que o valor seja sempre uma lista"""
        if value is None:
            return []
        if isinstance(value, list):
            return value
        return [value]
    
    @app.template_filter('safe_dict')
    def safe_dict_filter(value):
        """Garante que o valor seja sempre um dicionário"""
        if value is None:
            return {}
        if isinstance(value, dict):
            return value
        return {}
    
    @app.template_filter('safe_str')
    def safe_str_filter(value):
        """Garante que o valor seja sempre uma string"""
        if value is None:
            return ""
        return str(value)