createfakeusers.py 1.7 KB

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