From df8cc1a1d065d68931ad188f918d1d8d643375db Mon Sep 17 00:00:00 2001 From: kuldeepkhatke Date: Tue, 8 Jul 2025 19:47:34 +0530 Subject: [PATCH] Added cleanup_expired_attempts action --- axes/admin.py | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/axes/admin.py b/axes/admin.py index 9cae2e6..a0c208c 100644 --- a/axes/admin.py +++ b/axes/admin.py @@ -4,6 +4,7 @@ from django.utils.translation import gettext_lazy as _ from axes.conf import settings from axes.models import AccessAttempt, AccessLog, AccessFailureLog +from axes.handlers.database import AxesDatabaseHandler class IsLockedOutFilter(admin.SimpleListFilter): @@ -68,6 +69,17 @@ class AccessAttemptAdmin(admin.ModelAdmin): "expiration", ] + actions = ['cleanup_expired_attempts'] + + @admin.action(description=_('Clean up expired attempts')) + def cleanup_expired_attempts(self, request, queryset): + count = self.handler.clean_expired_user_attempts(request=request) + self.message_user(request, _(f"Cleaned up {count} expired access attempts.")) + + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + self.handler = AxesDatabaseHandler() + def has_add_permission(self, request: HttpRequest) -> bool: return False