29 lines
1.1 KiB
Python
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)
|