Skip to content
Snippets Groups Projects
Select Git revision
  • jk/issue-96
  • devel default
  • master
  • fo
  • jirka/typing
  • fo-base
  • mj/submit-images
  • jk/issue-196
  • honza/add-contestant
  • honza/mr7
  • honza/mrf
  • honza/mrd
  • honza/mra
  • honza/mr6
  • honza/submit-images
  • honza/kolo-vs-soutez
  • jh-stress-test-wip
  • shorten-schools
18 results

create-user

Blame
  • 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)