diff --git a/InvenTree/InvenTree/apps.py b/InvenTree/InvenTree/apps.py index 31a887d736..5f347dd1e5 100644 --- a/InvenTree/InvenTree/apps.py +++ b/InvenTree/InvenTree/apps.py @@ -76,6 +76,12 @@ class InvenTreeConfig(AppConfig): minutes=30, ) + # Delete old notification records + InvenTree.tasks.schedule_task( + 'common.tasks.delete_old_notifications', + schedule_type=Schedule.DAILY, + ) + def update_exchange_rates(self): """ Update exchange rates each time the server is started, *if*: diff --git a/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py b/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py index 07e700a1cf..bf36a612d1 100644 --- a/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py +++ b/InvenTree/InvenTree/management/commands/rebuild_thumbnails.py @@ -17,7 +17,7 @@ from company.models import Company from part.models import Part -logger = logging.getLogger("inventree-thumbnails") +logger = logging.getLogger('inventree') class Command(BaseCommand): diff --git a/InvenTree/common/tasks.py b/InvenTree/common/tasks.py new file mode 100644 index 0000000000..409acf5a13 --- /dev/null +++ b/InvenTree/common/tasks.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +import logging +from datetime import timedelta, datetime + +from django.core.exceptions import AppRegistryNotReady + + +logger = logging.getLogger('inventree') + + +def delete_old_notifications(): + """ + Remove old notifications from the database. + + Anything older than ~3 months is removed + """ + + try: + from common.models import NotificationEntry + except AppRegistryNotReady: + logger.info("Could not perform 'delete_old_notifications' - App registry not ready") + return + + before = datetime.now() - timedelta(days=90) + + # Delete notification records before the specified date + NotificationEntry.objects.filter(updated__lte=before).delete() diff --git a/tasks.py b/tasks.py index 59fa83e56b..c960fb8657 100644 --- a/tasks.py +++ b/tasks.py @@ -286,6 +286,7 @@ def content_excludes(): "users.owner", "exchange.rate", "exchange.exchangebackend", + "common.notificationentry", ] output = ""