createfakebans.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import random
  2. import sys
  3. from django.core.management.base import BaseCommand
  4. from faker import Factory
  5. from ....core.management.progressbar import show_progress
  6. from ....users.models import Ban
  7. from ...bans import get_fake_username_ban, get_fake_email_ban, get_fake_ip_ban
  8. class Command(BaseCommand):
  9. help = "Creates random fakey bans for testing purposes"
  10. def handle(self, *args, **options):
  11. try:
  12. fake_bans_to_create = int(args[0])
  13. except IndexError:
  14. fake_bans_to_create = 5
  15. except ValueError:
  16. self.stderr.write("\nOptional argument should be integer.")
  17. sys.exit(1)
  18. fake = Factory.create()
  19. ban_fakers = (get_fake_username_ban, get_fake_email_ban, get_fake_ip_ban)
  20. message = "Creating %s fake bans...\n"
  21. self.stdout.write(message % fake_bans_to_create)
  22. created_count = 0
  23. show_progress(self, created_count, fake_bans_to_create)
  24. for _ in range(fake_bans_to_create):
  25. ban_faker = random.choice(ban_fakers)
  26. ban_faker(fake)
  27. created_count += 1
  28. show_progress(self, created_count, fake_bans_to_create)
  29. Ban.objects.invalidate_cache()
  30. message = "\n\nSuccessfully created %s fake bans"
  31. self.stdout.write(message % created_count)