forked from Github-Mirrors/canaille
Split populate logics in its own file
This commit is contained in:
parent
055a62a6cc
commit
b9704ce8f1
2 changed files with 55 additions and 30 deletions
|
@ -1,14 +1,14 @@
|
||||||
import functools
|
import functools
|
||||||
import random
|
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
import click
|
import click
|
||||||
from canaille import create_app
|
from canaille import create_app
|
||||||
from canaille.i18n import available_language_codes
|
|
||||||
from canaille.models import Group
|
from canaille.models import Group
|
||||||
from canaille.models import User
|
from canaille.models import User
|
||||||
from canaille.oidc.models import AuthorizationCode
|
from canaille.oidc.models import AuthorizationCode
|
||||||
from canaille.oidc.models import Token
|
from canaille.oidc.models import Token
|
||||||
|
from canaille.populate import fake_groups
|
||||||
|
from canaille.populate import fake_users
|
||||||
from flask import current_app
|
from flask import current_app
|
||||||
from flask.cli import FlaskGroup
|
from flask.cli import FlaskGroup
|
||||||
from flask.cli import with_appcontext
|
from flask.cli import with_appcontext
|
||||||
|
@ -117,25 +117,8 @@ if HAS_FAKER: # pragma: no branch
|
||||||
"""
|
"""
|
||||||
Populate the database with generated random users.
|
Populate the database with generated random users.
|
||||||
"""
|
"""
|
||||||
from faker.config import AVAILABLE_LOCALES
|
|
||||||
|
|
||||||
locales = list(set(available_language_codes()) & set(AVAILABLE_LOCALES))
|
fake_users(ctx.obj["number"])
|
||||||
fake = faker.Faker(locales)
|
|
||||||
for i in range(ctx.obj["number"]):
|
|
||||||
locale = random.choice(locales)
|
|
||||||
profile = fake[locale].profile()
|
|
||||||
User(
|
|
||||||
cn=profile["name"],
|
|
||||||
givenName=profile["name"].split(" ")[0],
|
|
||||||
sn=profile["name"].split(" ")[1],
|
|
||||||
uid=profile["username"],
|
|
||||||
mail=profile["mail"],
|
|
||||||
telephoneNumber=profile["ssn"],
|
|
||||||
labeledURI=profile["website"][0],
|
|
||||||
postalAddress=profile["residence"],
|
|
||||||
userPassword=fake.password(),
|
|
||||||
locale=locale,
|
|
||||||
).save()
|
|
||||||
|
|
||||||
@populate.command()
|
@populate.command()
|
||||||
@click.pass_context
|
@click.pass_context
|
||||||
|
@ -151,13 +134,4 @@ if HAS_FAKER: # pragma: no branch
|
||||||
Populate the database with generated random groups.
|
Populate the database with generated random groups.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
fake = faker.Faker()
|
fake_groups(ctx.obj["number"], nb_users_max)
|
||||||
users = User.all()
|
|
||||||
for i in range(ctx.obj["number"]):
|
|
||||||
group = Group(
|
|
||||||
cn=fake.unique.word(),
|
|
||||||
description=fake.sentence(),
|
|
||||||
)
|
|
||||||
nb_users = random.randrange(1, nb_users_max + 1)
|
|
||||||
group.member = list({random.choice(users).dn for _ in range(nb_users)})
|
|
||||||
group.save()
|
|
||||||
|
|
51
canaille/populate.py
Normal file
51
canaille/populate.py
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
import random
|
||||||
|
|
||||||
|
import faker
|
||||||
|
from canaille.i18n import available_language_codes
|
||||||
|
from canaille.models import Group
|
||||||
|
from canaille.models import User
|
||||||
|
from faker.config import AVAILABLE_LOCALES
|
||||||
|
|
||||||
|
|
||||||
|
def faker_generator():
|
||||||
|
locales = list(set(available_language_codes()) & set(AVAILABLE_LOCALES))
|
||||||
|
return faker.Faker(locales)
|
||||||
|
|
||||||
|
|
||||||
|
def fake_users(nb=1):
|
||||||
|
fake = faker_generator()
|
||||||
|
locale = random.choice(fake.locales)
|
||||||
|
users = list()
|
||||||
|
for _ in range(nb):
|
||||||
|
profile = fake.profile()
|
||||||
|
user = User(
|
||||||
|
cn=profile["name"],
|
||||||
|
givenName=profile["name"].split(" ")[0],
|
||||||
|
sn=profile["name"].split(" ")[1],
|
||||||
|
uid=profile["username"],
|
||||||
|
mail=profile["mail"],
|
||||||
|
telephoneNumber=profile["ssn"],
|
||||||
|
labeledURI=profile["website"][0],
|
||||||
|
postalAddress=profile["residence"],
|
||||||
|
userPassword=fake.password(),
|
||||||
|
preferredLanguage=locale,
|
||||||
|
)
|
||||||
|
user.save()
|
||||||
|
users.append(user)
|
||||||
|
return users
|
||||||
|
|
||||||
|
|
||||||
|
def fake_groups(nb=1, nb_users_max=1):
|
||||||
|
fake = faker_generator()
|
||||||
|
users = User.all()
|
||||||
|
groups = list()
|
||||||
|
for _ in range(nb):
|
||||||
|
group = Group(
|
||||||
|
cn=fake.unique.word(),
|
||||||
|
description=fake.sentence(),
|
||||||
|
)
|
||||||
|
nb_users = random.randrange(1, nb_users_max + 1)
|
||||||
|
group.member = list({random.choice(users).dn for _ in range(nb_users)})
|
||||||
|
group.save()
|
||||||
|
groups.append(group)
|
||||||
|
return groups
|
Loading…
Reference in a new issue