From 81bcd47ab0827c7ff48bd9dd0503ed015b080076 Mon Sep 17 00:00:00 2001 From: Jan-Jelle Kester Date: Wed, 27 Jul 2016 18:17:59 +0200 Subject: [PATCH 1/2] Add management command for deleting all log entries Issue #57 --- src/auditlog/management/__init__.py | 0 src/auditlog/management/commands/__init__.py | 0 .../management/commands/auditlogflush.py | 20 +++++++++++++++++++ src/auditlog_tests/manage.py | 10 ++++++++++ 4 files changed, 30 insertions(+) create mode 100644 src/auditlog/management/__init__.py create mode 100644 src/auditlog/management/commands/__init__.py create mode 100644 src/auditlog/management/commands/auditlogflush.py create mode 100644 src/auditlog_tests/manage.py diff --git a/src/auditlog/management/__init__.py b/src/auditlog/management/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/auditlog/management/commands/__init__.py b/src/auditlog/management/commands/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/src/auditlog/management/commands/auditlogflush.py b/src/auditlog/management/commands/auditlogflush.py new file mode 100644 index 0000000..e7b1f73 --- /dev/null +++ b/src/auditlog/management/commands/auditlogflush.py @@ -0,0 +1,20 @@ +from django.core.management.base import NoArgsCommand +from six import moves + +from auditlog.models import LogEntry + + +class Command(NoArgsCommand): + help = 'Deletes all log entries from the database.' + + def handle_noargs(self, **options): + answer = None + + while answer not in ['', 'y', 'n']: + answer = moves.input("Are you sure? [y/N]: ").lower().strip() + + if answer == 'y': + count = LogEntry.objects.all().count() + LogEntry.objects.all().delete() + + print("Deleted %d objects." % count) diff --git a/src/auditlog_tests/manage.py b/src/auditlog_tests/manage.py new file mode 100644 index 0000000..48371db --- /dev/null +++ b/src/auditlog_tests/manage.py @@ -0,0 +1,10 @@ +#!/usr/bin/env python +import os +import sys + +if __name__ == "__main__": + os.environ.setdefault("DJANGO_SETTINGS_MODULE", "auditlog_tests.test_settings") + + from django.core.management import execute_from_command_line + + execute_from_command_line(sys.argv) From 182c3f69a6519c5fdd160a94f44aeca8bc4525d8 Mon Sep 17 00:00:00 2001 From: Jan-Jelle Kester Date: Wed, 27 Jul 2016 18:24:04 +0200 Subject: [PATCH 2/2] Add management command for deleting all log entries Issue #57 --- docs/source/usage.rst | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/docs/source/usage.rst b/docs/source/usage.rst index 126c5d0..1d06658 100644 --- a/docs/source/usage.rst +++ b/docs/source/usage.rst @@ -121,3 +121,17 @@ related objects:: obj = MyModel.objects.first() rel_history = LogEntry.objects.get_for_objects(obj.related.all()) full_history = (obj.history.all() | rel_history.all()).order_by('-timestamp') + +Management commands +------------------- + +.. versionadded:: 0.4.0 + +Auditlog provides the ``auditlogflush`` management command to clear all log entries from the database. + +The command asks for confirmation, it is not possible to execute the command without giving any form of (simulated) user +input. + +.. warning:: + + Using the ``auditlogflush`` command deletes all log entries permanently and irreversibly from the database.