from django.shortcuts import redirect
from django.urls import resolve, reverse
from .models import MaintenanceMode

class MaintenanceMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        # Excluir todas las rutas bajo /admin y la propia página de mantenimiento
        excluded_prefixes = [
            reverse('admin:index').rstrip('/'),  # Asegura que todas las rutas bajo /admin estén excluidas
            reverse('maintenance').rstrip('/'),  # Página de mantenimiento
        ]

        # Verificar si la ruta actual está en los prefijos excluidos
        if any(request.path.startswith(prefix) for prefix in excluded_prefixes):
            return self.get_response(request)

        # Verificar si el modo de mantenimiento está activo
        try:
            maintenance = MaintenanceMode.objects.first()
            if maintenance and maintenance.is_active:
                return redirect('maintenance')
        except MaintenanceMode.DoesNotExist:
            pass

        return self.get_response(request)
