mirror of
https://github.com/jwinterm/modoboa.git
synced 2026-10-17 05:41:25 +02:00
@@ -188,6 +188,7 @@ class CoreGlobalParametersSerializer(serializers.Serializer):
|
||||
inactive_account_threshold = serializers.IntegerField(default=30)
|
||||
top_notifications_check_interval = serializers.IntegerField(default=30)
|
||||
log_maximum_age = serializers.IntegerField(default=365)
|
||||
message_history_maximum_age = serializers.IntegerField(default=180)
|
||||
items_per_page = serializers.IntegerField(default=30)
|
||||
default_top_redirection = serializers.ChoiceField(
|
||||
default="user", choices=[("user", _("User profile"))], required=False
|
||||
|
||||
@@ -720,6 +720,17 @@ GLOBAL_PARAMETERS_STRUCT = collections.OrderedDict(
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
"message_history_maximum_age",
|
||||
{
|
||||
"label": gettext_lazy(
|
||||
"Retention time in message history"
|
||||
),
|
||||
"help_text": gettext_lazy(
|
||||
"Retention time (in days) of a message in the message history section"
|
||||
),
|
||||
},
|
||||
),
|
||||
(
|
||||
"items_per_page",
|
||||
{
|
||||
|
||||
@@ -5,6 +5,7 @@ from django.core.management.base import BaseCommand
|
||||
from django.utils import timezone
|
||||
|
||||
from modoboa.core.models import Log
|
||||
from modoboa.maillog.models import Maillog
|
||||
from modoboa.parameters import tools as param_tools
|
||||
|
||||
|
||||
@@ -41,4 +42,12 @@ class Command(BaseCommand):
|
||||
self.__vprint(f"Deleting logs older than {log_maximum_age} days...")
|
||||
limit = timezone.now() - datetime.timedelta(log_maximum_age)
|
||||
Log.objects.filter(date_created__lt=limit).delete()
|
||||
message_history_maximum_age = param_tools.get_global_parameter(
|
||||
"message_history_maximum_age"
|
||||
)
|
||||
self.__vprint(
|
||||
f"Deleting messages in history older than {message_history_maximum_age} days..."
|
||||
)
|
||||
limit = timezone.now() - datetime.timedelta(message_history_maximum_age)
|
||||
Maillog.objects.filter(date__lt=limit).delete()
|
||||
self.__vprint("Done.")
|
||||
|
||||
@@ -16,6 +16,7 @@ from django.urls import reverse
|
||||
from django.utils import timezone
|
||||
|
||||
from modoboa.lib.tests import ModoTestCase, SimpleModoTestCase
|
||||
from modoboa.maillog import factories as maillog_factories, models as maillog_models
|
||||
from .. import factories, mocks, models
|
||||
|
||||
|
||||
@@ -60,12 +61,16 @@ class ManagementCommandsTestCase(SimpleModoTestCase):
|
||||
|
||||
def test_clean_logs(self):
|
||||
"""Run cleanlogs command."""
|
||||
management.call_command("load_initial_data", "--no-frontend")
|
||||
log1 = factories.LogFactory()
|
||||
factories.LogFactory()
|
||||
log1.date_created -= relativedelta(years=2)
|
||||
log1.save(update_fields=["date_created"])
|
||||
maillog_factories.MaillogFactory(date=timezone.now() - relativedelta(days=190))
|
||||
maillog_factories.MaillogFactory()
|
||||
management.call_command("cleanlogs")
|
||||
self.assertEqual(models.Log.objects.count(), 1)
|
||||
self.assertEqual(maillog_models.Maillog.objects.count(), 1)
|
||||
|
||||
def test_init_data_non_duplicate_client_creation(self):
|
||||
"""Test that the load_initial_data command does not create duplicates
|
||||
|
||||
Reference in New Issue
Block a user