37 lines
888 B
Python
37 lines
888 B
Python
"""Generates fake user accounts."""
|
|
|
|
from io import BytesIO
|
|
|
|
import requests
|
|
from PIL import Image
|
|
from faker import Faker
|
|
|
|
from lumi2.usermodel import User
|
|
|
|
|
|
def get_random_avatar() -> Image.Image:
|
|
"""Returns a PIL JPEG Image of an AI-generated person."""
|
|
|
|
url = "https://thispersondoesnotexist.com/image"
|
|
response = requests.get(url)
|
|
if response.status_code != 200:
|
|
raise RuntimeError(
|
|
f"Request to '{url}' failed with code {response.status_code}."
|
|
)
|
|
|
|
return Image.open(BytesIO(response.content))
|
|
|
|
|
|
def generate_random_user() -> User:
|
|
"""Generates a randomized user object and returns it."""
|
|
|
|
faker = Faker()
|
|
|
|
return User(
|
|
faker.user_name(),
|
|
User.generate_password_hash(faker.password()),
|
|
faker.email(),
|
|
faker.first_name(),
|
|
faker.last_name(),
|
|
picture=get_random_avatar(),
|
|
)
|