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)