from django.shortcuts import HttpResponseRedirect
from django.urls import reverse

class AuthRequiredMiddleware(object):
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # Procesar cada solicitud antes de que la vista sea llamada
        response = self.get_response(request)
        
        print(request.path_info)  # Para depuración

        # Excluir ciertas rutas del middleware de autenticación
        if "/catalog/streaming/" in request.path_info:
            return response

        if "/catalog/api/" in request.path_info:
            # Permitir todas las rutas de la API (si es necesario)
            return response

        # Excluir específicamente la vista run_update_and_report de la autenticación
        if request.path_info == reverse('run_update_and_report'):
            return response

        # Excluir otras vistas como ws-news-list2, signup, etc.
        if request.path_info == reverse('ws-news-list2') or request.path_info == reverse('signup') or request.path_info == reverse('status'):
            return response

        # Redirigir a la página de login si el usuario no está autenticado
        if not request.user.is_authenticated and request.path_info != reverse('login'):
            return HttpResponseRedirect(reverse('login'))

        return response