33 lines
1.3 KiB
Python
33 lines
1.3 KiB
Python
# intendencia/middleware.py
|
|
from django.http import HttpResponseForbidden
|
|
from django.urls import reverse
|
|
from django.utils import timezone
|
|
from datetime import datetime
|
|
from django.shortcuts import redirect
|
|
|
|
class ExpirationCheckMiddleware:
|
|
def __init__(self, get_response):
|
|
self.get_response = get_response
|
|
|
|
def __call__(self, request):
|
|
# Fecha de expiración (cámbiala según necesites)
|
|
expiration_date = datetime(2026, 12, 31) # AAAA, MM, DD
|
|
|
|
# Permitir acceso a la página de expiración y a archivos estáticos
|
|
if request.path.startswith('/static/') or request.path.startswith('/media/'):
|
|
return self.get_response(request)
|
|
|
|
# Si la fecha actual es posterior a la de expiración
|
|
if timezone.now().date() > expiration_date.date():
|
|
# Permitir logout
|
|
if request.path == reverse('logout'):
|
|
return self.get_response(request)
|
|
# Redirigir a la página de expiración
|
|
if request.path != reverse('expired'):
|
|
return redirect('expired')
|
|
|
|
# Permitir acceso a superusuarios después de la expiración
|
|
if request.user.is_authenticated and request.user.is_superuser:
|
|
return self.get_response(request)
|
|
|
|
return self.get_response(request) |