deleteinactiveusers.py 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from __future__ import unicode_literals
  2. from datetime import timedelta
  3. from django.contrib.auth import get_user_model
  4. from django.core.management.base import BaseCommand
  5. from django.utils import timezone
  6. from misago.conf import settings
  7. from misago.core.pgutils import chunk_queryset
  8. UserModel = get_user_model()
  9. class Command(BaseCommand):
  10. help = (
  11. "Deletes inactive user accounts older than set time."
  12. )
  13. def handle(self, *args, **options):
  14. if not settings.MISAGO_DELETE_NEW_INACTIVE_USERS_OLDER_THAN_DAYS:
  15. self.stdout.write("Automatic deletion of inactive users is currently disabled.")
  16. return
  17. users_deleted = 0
  18. joined_on_cutoff = timezone.now() - timedelta(
  19. days=settings.MISAGO_DELETE_NEW_INACTIVE_USERS_OLDER_THAN_DAYS)
  20. queryset = UserModel.objects.filter(
  21. requires_activation__gt=UserModel.ACTIVATION_NONE,
  22. joined_on__lt=joined_on_cutoff,
  23. )
  24. for user in chunk_queryset(queryset):
  25. user.delete()
  26. users_deleted += 1
  27. self.stdout.write("Deleted users: {}".format(users_deleted))