deletemarkedusers.py 1000 B

123456789101112131415161718192021222324252627282930
  1. from django.contrib.auth import get_user_model
  2. from django.core.management.base import BaseCommand
  3. from ....conf.shortcuts import get_dynamic_settings
  4. from ....core.pgutils import chunk_queryset
  5. from ...deletesrecord import record_user_deleted_by_self
  6. from ...permissions import can_delete_own_account
  7. User = get_user_model()
  8. class Command(BaseCommand):
  9. help = (
  10. "Deletes accounts of users that have requested it. "
  11. "Leaves their content behind, but anonymises it."
  12. )
  13. def handle(self, *args, **options):
  14. users_deleted = 0
  15. settings = get_dynamic_settings()
  16. queryset = User.objects.filter(is_deleting_account=True)
  17. for user in chunk_queryset(queryset):
  18. if can_delete_own_account(settings, user, user):
  19. user.delete(anonymous_username=settings.anonymous_username)
  20. record_user_deleted_by_self()
  21. users_deleted += 1
  22. self.stdout.write("Deleted users: %s" % users_deleted)