From 8ef0420b23822375f2252312163a4c4d7906eb9a Mon Sep 17 00:00:00 2001 From: Ken Cochrane Date: Fri, 20 Mar 2015 10:10:07 -0400 Subject: [PATCH] added management command --- defender/management/__init__.py | 0 defender/management/commands/__init__.py | 0 .../commands/cleanup_django_axes.py | 33 +++++++++++++++++++ 3 files changed, 33 insertions(+) create mode 100644 defender/management/__init__.py create mode 100644 defender/management/commands/__init__.py create mode 100644 defender/management/commands/cleanup_django_axes.py diff --git a/defender/management/__init__.py b/defender/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/defender/management/commands/__init__.py b/defender/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/defender/management/commands/cleanup_django_axes.py b/defender/management/commands/cleanup_django_axes.py new file mode 100644 index 0000000..dfe2682 --- /dev/null +++ b/defender/management/commands/cleanup_django_axes.py @@ -0,0 +1,33 @@ +from datetime import timedelta + +from django.core.management.base import BaseCommand +from django.utils import timezone + +from ...models import AccessAttempt +from ... import config + + +class Command(BaseCommand): + help = "Cleans up django-defender AccessAttempt table" + + def handle(self, **options): + """ + Removes any entries in the AccessAttempt that are older + than your DEFENDER_ACCESS_ATTEMPT_EXPIRATION config, default 24 HOURS. + """ + print("Starting clean up of django-defender table") + now = timezone.now() + cleanup_delta = timedelta(hours=config.ACCESS_ATTEMPT_EXPIRATION) + min_attempt_time = now - cleanup_delta + + attempts_to_clean = AccessAttempt.objects.filter( + attempt_time__lt=min_attempt_time, + ) + attempts_to_clean_count = attempts_to_clean.count() + + attempts_to_clean.delete() + + print( + "Finished. Removed {0} AccessAttempt entries.".format( + attempts_to_clean_count) + )