#! /opt/mailman/mm/venv/bin/python # Copyright (C) 2022 by the Free Software Foundation, Inc. # # This program is free software; you can redistribute it and/or # modify it under the terms of the GNU General Public License # as published by the Free Software Foundation; either version 2 # of the License, or (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, # USA. """This deletes archived messages from HyperKitty with dates older than that supplied as it's argument. """ import os import sys import django from datetime import datetime, timezone sys.path.insert(0, '/opt/mailman/mm') os.environ['DJANGO_SETTINGS_MODULE'] = 'settings' django.setup() from hyperkitty.models.email import Email def usage(): print(f'Usage: {sys.argv[0]} yyyy-mm-dd', file=sys.stderr) sys.exit(1) if len(sys.argv) != 2: usage() try: year, month, day = sys.argv[1].split('-') except ValueError: usage() try: cutoff = datetime(int(year), int(month), int(day), tzinfo=timezone.utc) except (TypeError, ValueError): usage() count = 0 for msg in Email.objects.filter(date__lt=cutoff): msg.delete() count += 1 print(f'Deleted {count} messages')