from datetime import timedelta from django.contrib.auth import get_user_model from django.core.management.base import BaseCommand from django.utils import timezone from misago.conf import settings from misago.core.pgutils import chunk_queryset UserModel = get_user_model() class Command(BaseCommand): help = "Deletes inactive user accounts older than set time." def handle(self, *args, **options): if not settings.MISAGO_DELETE_NEW_INACTIVE_USERS_OLDER_THAN_DAYS: self.stdout.write( "Automatic deletion of inactive users is currently disabled." ) return users_deleted = 0 joined_on_cutoff = timezone.now() - timedelta( days=settings.MISAGO_DELETE_NEW_INACTIVE_USERS_OLDER_THAN_DAYS ) queryset = UserModel.objects.filter( requires_activation__gt=UserModel.ACTIVATION_NONE, joined_on__lt=joined_on_cutoff, ) for user in chunk_queryset(queryset): user.delete() users_deleted += 1 self.stdout.write("Deleted users: %s" % users_deleted)