createfakeusers.py 1.6 KB

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