Files
NovaWoW/home/middleware.py
T
2024-12-29 03:11:45 +05:30

29 lines
1.1 KiB
Python

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)