diff options
author | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-03-04 14:45:13 +0100 |
---|---|---|
committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2025-03-04 14:53:48 +0100 |
commit | 99698eaf3f7783b5bd6ed0525f135f1c067de548 (patch) | |
tree | 77edd8aef4496b6140b4aa87a5b1c9c75c90fba1 /ishtar_common/management | |
parent | 245da22e8ce001c345b82772b7599885e753bacf (diff) | |
download | Ishtar-99698eaf3f7783b5bd6ed0525f135f1c067de548.tar.bz2 Ishtar-99698eaf3f7783b5bd6ed0525f135f1c067de548.zip |
✨ GDPR clean command
Diffstat (limited to 'ishtar_common/management')
-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) |