createfakefollowers.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. import random
  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 misago.core.management.progressbar import show_progress
  7. from misago.users.models import Rank
  8. class Command(BaseCommand):
  9. help = 'Adds random followers for testing purposes'
  10. def handle(self, *args, **options):
  11. User = get_user_model()
  12. total_users = User.objects.count()
  13. message = 'Adding fake followers to %s users...\n'
  14. self.stdout.write(message % total_users)
  15. message = '\n\nSuccessfully added %s fake users'
  16. total_followers = 0
  17. processed_count = 0
  18. show_progress(self, processed_count, total_users)
  19. for user in User.objects.iterator():
  20. user.followed_by.clear()
  21. users_to_add = random.randint(1, total_users - 1)
  22. random_queryset = User.objects.exclude(id=user.id).order_by('?')
  23. while users_to_add > 0:
  24. new_follower = random_queryset[:1][0]
  25. if not new_follower.is_following(user):
  26. user.followed_by.add(new_follower)
  27. users_to_add -= 1
  28. total_followers += 1
  29. processed_count += 1
  30. show_progress(self, processed_count, total_users)
  31. self.stdout.write(message % total_followers)