createfakeusers.py 1.7 KB

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