Select Git revision
ab_tree_test.py
-
David Mareček authoredDavid Mareček authored
create-user 1.61 KiB
#!/usr/bin/env python3
import argparse
import sys
import mo.db as db
import mo.users
import mo.util
parser = argparse.ArgumentParser(description='Založí nového uživatele')
parser.add_argument(dest='email', help='e-mailová adresa')
parser.add_argument(dest='first_name', help='křestní jméno (jedno nebo více)')
parser.add_argument(dest='last_name', help='příjmení (jedno nebo více)')
parser.add_argument('--org', default=False, action='store_true', help='přidělí uživateli organizátorská práva')
parser.add_argument('--admin', default=False, action='store_true', help='přidělí uživateli správcovská práva')
parser.add_argument('--passwd', type=str, help='nastaví počáteční heslo')
parser.add_argument('--mail', default=False, action='store_true', help='pošle uživateli mail o založení účtu')
args = parser.parse_args()
email = mo.users.normalize_email(args.email)
mo.util.init_standalone()
session = db.get_session()
user = session.query(db.User).filter_by(email=email).one_or_none()
if user is not None:
print(f'Uživatel s e-mailem {email} již existuje (user_id {user.user_id}).')
sys.exit(0)
user = db.User(
email=email,
first_name=args.first_name,
last_name=args.last_name,
is_org=args.org,
is_admin=args.admin,
)
session.add(user)
session.flush()
mo.util.log(db.LogType.user, user.user_id, {
'action': 'created',
'new': db.row2dict(user),
})
if args.passwd is not None:
mo.users.set_password(user, args.passwd)
if args.mail:
token = mo.users.ask_reset_password(user)
session.commit()
if args.mail:
mo.util.send_new_account_email(user, token)