user.py 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import random
  2. from django.contrib.auth import get_user_model
  3. from django.utils.crypto import get_random_string
  4. from ..users.bans import ban_user
  5. from ..users.test import create_test_user
  6. from .utils import retry_on_db_error
  7. User = get_user_model()
  8. PASSWORD = "password"
  9. @retry_on_db_error
  10. def get_fake_user(fake, rank=None, requires_activation=User.ACTIVATION_NONE):
  11. username = get_fake_username(fake)
  12. return create_test_user(
  13. username,
  14. fake.email(),
  15. PASSWORD,
  16. rank=rank,
  17. requires_activation=requires_activation,
  18. )
  19. def get_fake_banned_user(fake, rank=None):
  20. user = get_fake_user(fake, rank=rank)
  21. ban_user(user)
  22. return user
  23. def get_fake_inactive_user(fake, rank=None):
  24. return get_fake_user(fake, rank=rank, requires_activation=User.ACTIVATION_USER)
  25. def get_fake_admin_activated_user(fake, rank=None):
  26. return get_fake_user(fake, rank=rank, requires_activation=User.ACTIVATION_ADMIN)
  27. def get_fake_username(fake):
  28. possible_usernames = [
  29. fake.first_name(),
  30. fake.last_name(),
  31. fake.name().replace(" ", ""),
  32. fake.user_name(),
  33. get_random_string(random.randint(4, 8)),
  34. ]
  35. return random.choice(possible_usernames)