createfakeusers.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. import random
  2. import sys
  3. import time
  4. from django.contrib.auth import get_user_model
  5. from django.core.exceptions import ValidationError
  6. from django.core.management.base import BaseCommand
  7. from django.db import IntegrityError
  8. from faker import Factory
  9. from misago.core.management.progressbar import show_progress
  10. from misago.users.models import Rank
  11. class Command(BaseCommand):
  12. help = 'Creates random fakey users for testing purposes'
  13. def handle(self, *args, **options):
  14. try:
  15. fake_users_to_create = int(args[0])
  16. except IndexError:
  17. fake_users_to_create = 5
  18. except ValueError:
  19. self.stderr.write("\nOptional argument should be integer.")
  20. sys.exit(1)
  21. fake = Factory.create()
  22. User = get_user_model()
  23. ranks = [r for r in Rank.objects.all()]
  24. message = 'Creating %s fake user accounts...\n'
  25. self.stdout.write(message % fake_users_to_create)
  26. message = '\n\nSuccessfully created %s fake user accounts'
  27. created_count = 0
  28. start_time = time.time()
  29. show_progress(self, created_count, fake_users_to_create)
  30. for i in xrange(fake_users_to_create):
  31. try:
  32. kwargs = {
  33. 'rank': random.choice(ranks),
  34. }
  35. User.objects.create_user(fake.first_name(), fake.email(),
  36. 'pass123', set_default_avatar=True,
  37. **kwargs)
  38. except (ValidationError, IntegrityError):
  39. pass
  40. else:
  41. created_count += 1
  42. show_progress(
  43. self, created_count, fake_users_to_create, start_time)
  44. self.stdout.write(message % created_count)