lumi2/tests/fakedata.py

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(),
)