1234567891011121314151617181920212223242526272829303132333435 |
- import datetime
-
- from django.core.management.base import BaseCommand
- from django.utils.timezone import now
-
- from ...models import Attachment, Email
-
-
- class Command(BaseCommand):
- help = 'Place deferred messages back in the queue.'
-
- def add_arguments(self, parser):
- parser.add_argument('-d', '--days',
- type=int, default=90,
- help="Cleanup mails older than this many days, defaults to 90.")
-
- parser.add_argument('-da', '--delete-attachments', action='store_true',
- help="Delete orphaned attachments.")
-
- def handle(self, verbosity, days, delete_attachments, **options):
- # Delete mails and their related logs and queued created before X days
-
- cutoff_date = now() - datetime.timedelta(days)
- count = Email.objects.filter(created__lt=cutoff_date).count()
- Email.objects.only('id').filter(created__lt=cutoff_date).delete()
- print("Deleted {0} mails created before {1} ".format(count, cutoff_date))
-
- if delete_attachments:
- attachments = Attachment.objects.filter(emails=None)
- attachments_count = len(attachments)
- for attachment in attachments:
- # Delete the actual file
- attachment.file.delete()
- attachments.delete()
- print("Deleted {0} attachments".format(attachments_count))
|