New management command to clean logs.

fixes #320
This commit is contained in:
Antoine Nguyen
2013-05-18 10:32:32 +02:00
parent fcc5a795c3
commit d78d05060d
4 changed files with 52 additions and 0 deletions
+6
View File
@@ -156,6 +156,12 @@ class GeneralParametersForm(parameters.AdminParametersForm):
sep3 = SeparatorField(label=ugettext_lazy("Miscellaneous"))
log_maximum_age = forms.IntegerField(
label=ugettext_lazy("Maximum log record age"),
initial=365,
help_text=ugettext_lazy("The maximum age in days of a log record")
)
items_per_page = forms.IntegerField(
label=ugettext_lazy("Items per page"),
initial=30,
View File
@@ -0,0 +1,46 @@
#!/usr/bin/env python
# coding: utf-8
import datetime
from optparse import make_option
from django.core.management.base import BaseCommand
from django.utils import timezone
from modoboa.lib import parameters
from modoboa.lib.models import Log
from modoboa.admin import AdminConsole
class Command(BaseCommand):
args = ''
help = 'Log table cleanup'
option_list = BaseCommand.option_list + (
make_option('--debug',
action='store_true',
default=False,
help='Activate debug output'),
make_option('--verbose',
action='store_true',
default=False,
help='Display informational messages')
)
def __vprint(self, msg):
if not self.verbose:
return
print msg
def handle(self, *args, **options):
if options["debug"]:
import logging
l = logging.getLogger("django.db.backends")
l.setLevel(logging.DEBUG)
l.addHandler(logging.StreamHandler())
self.verbose = options["verbose"]
AdminConsole().load()
log_maximum_age = int(parameters.get_admin("LOG_MAXIMUM_AGE", app="admin"))
self.__vprint("Deleting logs older than %d days..." % log_maximum_age)
limit = timezone.now() - datetime.timedelta(log_maximum_age)
Log.objects.filter(date_created__lt=limit).delete()
self.__vprint("Done.")