diff options
Diffstat (limited to 'ishtar_common/management/commands/gdpr_clean.py')
-rw-r--r-- | ishtar_common/management/commands/gdpr_clean.py | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/ishtar_common/management/commands/gdpr_clean.py b/ishtar_common/management/commands/gdpr_clean.py new file mode 100644 index 000000000..1f3f413f6 --- /dev/null +++ b/ishtar_common/management/commands/gdpr_clean.py @@ -0,0 +1,45 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- + +import datetime +from django.conf import settings +from django.core.management.base import BaseCommand +import sys + +from ishtar_common.models import GDPRLog, GDPRPerson +from ishtar_common.utils import BColors + + +def get_time(): + return datetime.datetime.now().isoformat().split(".")[0] + + +def clean_gdpr(): + date = datetime.datetime.now() - ( + datetime.timedelta(days=settings.GDPR_RETENTION_PERIOD) + ) + q = GDPRLog.objects.filter(date__lte=date) + nb = q.count() + q.delete() + q = GDPRPerson.objects.filter(logs=None) + q.delete() + return nb + + +class Command(BaseCommand): + help = "Cleaning up obsolete gdpr data" + + def add_arguments(self, parser): + parser.add_argument( + "--quiet", dest="quiet", action="store_true", help="Quiet output" + ) + + def handle(self, *args, **options): + quiet = options["quiet"] + if not quiet: + msg = BColors.format("HEADER", f"[{get_time()}] Processing DGPR cleansing\n") + sys.stdout.write(msg) + nb = clean_gdpr() + if not quiet: + sys.stdout.write(f"{nb} dgpr logs cleaned\n") + sys.exit(1) |