2023-02-26 21:21:55 +00:00
|
|
|
import random
|
|
|
|
|
|
|
|
import faker
|
2023-03-12 16:42:32 +00:00
|
|
|
import ldap
|
2023-04-09 11:34:38 +00:00
|
|
|
from canaille.core.models import Group
|
|
|
|
from canaille.core.models import User
|
|
|
|
from canaille.utils.i18n import available_language_codes
|
2023-02-26 21:21:55 +00:00
|
|
|
from faker.config import AVAILABLE_LOCALES
|
|
|
|
|
|
|
|
|
2023-03-12 16:31:59 +00:00
|
|
|
def faker_generator(locales=None):
|
|
|
|
locales = locales or list(set(available_language_codes()) & set(AVAILABLE_LOCALES))
|
|
|
|
return [faker.Faker(locale) for locale in locales]
|
2023-02-26 21:21:55 +00:00
|
|
|
|
|
|
|
|
|
|
|
def fake_users(nb=1):
|
2023-03-12 16:31:59 +00:00
|
|
|
fakes = faker_generator()
|
2023-02-26 21:21:55 +00:00
|
|
|
users = list()
|
|
|
|
for _ in range(nb):
|
2023-03-12 16:42:32 +00:00
|
|
|
try:
|
|
|
|
fake = random.choice(fakes)
|
|
|
|
name = fake.unique.name()
|
|
|
|
user = User(
|
2023-02-05 17:57:18 +00:00
|
|
|
formatted_name=name,
|
|
|
|
given_name=name.split(" ")[0],
|
|
|
|
family_name=name.split(" ")[1],
|
|
|
|
user_name=fake.unique.user_name(),
|
|
|
|
email=fake.unique.email(),
|
|
|
|
phone_number=fake.unique.ssn(),
|
|
|
|
profile_url=fake.unique.uri(),
|
|
|
|
address=fake.unique.address(),
|
2023-03-12 16:42:32 +00:00
|
|
|
street=fake.street_name(),
|
2023-02-05 17:57:18 +00:00
|
|
|
postal_code=fake.postcode(),
|
|
|
|
locality=fake.city(),
|
|
|
|
region=fake.state(),
|
|
|
|
employee_number=str(fake.unique.random_number()),
|
|
|
|
department=fake.word(),
|
2023-03-12 16:42:32 +00:00
|
|
|
title=fake.job(),
|
2023-02-05 17:57:18 +00:00
|
|
|
password=fake.password(),
|
|
|
|
preferred_language=fake._locales[0],
|
2023-03-12 16:42:32 +00:00
|
|
|
)
|
|
|
|
user.save()
|
|
|
|
users.append(user)
|
|
|
|
except ldap.ALREADY_EXISTS: # pragma: no cover
|
|
|
|
pass
|
2023-02-26 21:21:55 +00:00
|
|
|
return users
|
|
|
|
|
|
|
|
|
|
|
|
def fake_groups(nb=1, nb_users_max=1):
|
2023-03-12 16:31:59 +00:00
|
|
|
fake = faker_generator(["en_US"])[0]
|
2023-03-07 13:49:44 +00:00
|
|
|
users = User.query()
|
2023-02-26 21:21:55 +00:00
|
|
|
groups = list()
|
|
|
|
for _ in range(nb):
|
2023-03-12 16:42:32 +00:00
|
|
|
try:
|
|
|
|
group = Group(
|
|
|
|
cn=fake.unique.word(),
|
|
|
|
description=fake.sentence(),
|
|
|
|
)
|
|
|
|
nb_users = random.randrange(1, nb_users_max + 1)
|
|
|
|
group.member = list({random.choice(users) for _ in range(nb_users)})
|
|
|
|
group.save()
|
|
|
|
groups.append(group)
|
|
|
|
except ldap.ALREADY_EXISTS: # pragma: no cover
|
|
|
|
pass
|
2023-02-26 21:21:55 +00:00
|
|
|
return groups
|