deletemarkedusers.py 989 B

12345678910111213141516171819202122232425262728293031323334
  1. from __future__ import unicode_literals
  2. from django.conf import settings
  3. from django.contrib.auth import get_user_model
  4. from django.core.management.base import CommandError, BaseCommand
  5. from misago.core.pgutils import chunk_queryset
  6. from misago.users.permissions import can_delete_own_account
  7. UserModel = 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. if not settings.MISAGO_ENABLE_DELETE_OWN_ACCOUNT:
  15. self.stdout.write("Delete own account option is currently disabled.")
  16. deleted = 0
  17. queryset = UserModel.objects.filter(is_deleting_account=True)
  18. for user in chunk_queryset(queryset):
  19. if can_delete_own_account(user, user):
  20. user.delete()
  21. deleted += 1
  22. self.stdout.write("Deleted users: {}".format(deleted))