from datetime import datetime from django.conf import settings from django.utils import timezone class UndoSessionCleanup: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): undo_data = request.session.get('undo_data') if undo_data and 'timestamp' in undo_data: try: undo_timestamp = datetime.fromisoformat(undo_data['timestamp']) # Ensure timestamp is timezone-aware for comparison if timezone.is_naive(undo_timestamp): undo_timestamp = timezone.make_aware(undo_timestamp, timezone.get_default_timezone()) if (timezone.now() - undo_timestamp).total_seconds() > settings.UNDO_TIMEOUT: del request.session['undo_data'] except (ValueError, TypeError): # If timestamp is invalid, remove it del request.session['undo_data'] response = self.get_response(request) return response