createfakeusers.py 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import random
  2. import time
  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 Rank
  7. from ... import user
  8. class Command(BaseCommand):
  9. help = "Creates fake users for dev and testing purposes."
  10. def add_arguments(self, parser):
  11. parser.add_argument(
  12. "users", help="number of users to create", nargs="?", type=int, default=5
  13. )
  14. def handle(self, *args, **options):
  15. items_to_create = options["users"]
  16. fake = Factory.create()
  17. ranks = list(Rank.objects.all())
  18. message = "Creating %s fake user accounts...\n"
  19. self.stdout.write(message % items_to_create)
  20. created_count = 0
  21. start_time = time.time()
  22. show_progress(self, created_count, items_to_create)
  23. while created_count < items_to_create:
  24. rank = random.choice(ranks)
  25. if random.randint(0, 100) > 80:
  26. user.get_fake_inactive_user(fake, rank)
  27. elif random.randint(0, 100) > 90:
  28. user.get_fake_admin_activated_user(fake, rank)
  29. elif random.randint(0, 100) > 90:
  30. user.get_fake_banned_user(fake, rank)
  31. else:
  32. user.get_fake_user(fake, rank)
  33. created_count += 1
  34. show_progress(self, created_count, items_to_create, start_time)
  35. total_time = time.time() - start_time
  36. total_humanized = time.strftime("%H:%M:%S", time.gmtime(total_time))
  37. message = "\n\nSuccessfully created %s fake user accounts in %s"
  38. self.stdout.write(message % (created_count, total_humanized))