1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- import hashlib
- import random
- from django.contrib.auth import get_user_model
- from django.utils.crypto import get_random_string
- from ..users.bans import ban_user
- from ..users.test import create_test_user
- from .utils import retry_on_db_error
- User = get_user_model()
- AVATAR_SIZES = (400, 200, 100)
- GRAVATAR_URL = "https://www.gravatar.com/avatar/%s?s=%s&d=retro"
- PASSWORD = "password"
- @retry_on_db_error
- def get_fake_user(fake, rank=None, requires_activation=User.ACTIVATION_NONE):
- username = get_fake_username(fake)
- email = fake.email()
- return create_test_user(
- username,
- email.lower(),
- PASSWORD,
- avatars=get_fake_avatars(email),
- rank=rank,
- requires_activation=requires_activation,
- )
- def get_fake_banned_user(fake, rank=None):
- user = get_fake_user(fake, rank=rank)
- ban_user(user)
- return user
- def get_fake_inactive_user(fake, rank=None):
- return get_fake_user(fake, rank=rank, requires_activation=User.ACTIVATION_USER)
- def get_fake_admin_activated_user(fake, rank=None):
- return get_fake_user(fake, rank=rank, requires_activation=User.ACTIVATION_ADMIN)
- def get_fake_deleted_user(fake, rank=None):
- user = get_fake_user(fake, rank=rank)
- user.is_active = False
- user.save(update_fields=["is_active"])
- return user
- def get_fake_username(fake):
- possible_usernames = [
- fake.first_name(),
- fake.last_name(),
- fake.name().replace(" ", ""),
- fake.user_name(),
- get_random_string(random.randint(4, 8)),
- ]
- return random.choice(possible_usernames)
- def get_fake_avatars(email):
- email_hash = hashlib.md5(email.lower().encode("utf-8")).hexdigest()
- return [
- {"size": size, "url": GRAVATAR_URL % (email_hash, size)}
- for size in AVATAR_SIZES
- ]
|