#!/usr/bin/env python3 import argparse import sys import mo.db as db import mo.email 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 (jinak pošle aktivační mail)') 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) token = mo.users.make_activation_token(user) session.commit() if args.passwd is None: mo.email.send_new_account_email(user, token)