createfakeusers.py 1.7 KB

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