More checks preventing bad user deletes

This commit is contained in:
Daan Sprenkels
2018-08-18 22:45:19 +02:00
parent a22473c445
commit d1d3246ea1

View File

@ -6,6 +6,9 @@ from django.conf import settings
from django.db.models import Q from django.db.models import Q
from django.utils.timezone import get_default_timezone from django.utils.timezone import get_default_timezone
from queues.models import PlaylistSong
from songs.models import Song
_IMPORTANT_USERNAMES = ['root', 'admin', 'postmaster', 'dsprenkels', 'gmulder', 'bwesterb'] _IMPORTANT_USERNAMES = ['root', 'admin', 'postmaster', 'dsprenkels', 'gmulder', 'bwesterb']
class Command(BaseCommand): class Command(BaseCommand):
@ -57,10 +60,19 @@ class Command(BaseCommand):
deleted = 0 deleted = 0
for i, user in enumerate(users): for i, user in enumerate(users):
print("[{: 4.0f}% ] {}".format(100 * i / len(users), user)) print("[{: 4.0f}% ] {}".format(100 * i / len(users), user))
if user.username in _IMPORTANT_USERNAMES: if user.username in _IMPORTANT_USERNAMES:
self.stdout.write(self.style.WARNING("Not deleting user '{}': username looks important".format(user))) self.stdout.write(self.style.WARNING("Not deleting user '{}': username looks important".format(user)))
continue continue
if Song.objects.filter(deleted=False, user=user).count() > 500:
self.stdout.write(self.style.WARNING("Not deleting user '{}': has high upload score".format(user)))
continue
if PlaylistSong.objects.filter(user=user).count() > 1000:
self.stdout.write(self.style.WARNING("Not deleting user '{}': has high queue score".format(user)))
continue
user.delete() user.delete()
deleted += 1 deleted += 1
self.stdout.write(self.style.SUCCESS("Deleted {} users".format(deleted))) self.stdout.write(self.style.SUCCESS("Deleted {} users".format(deleted)))