def register():
    form = RegistrationForm()
    if request.method == 'POST':
        # TODO: enclose in transaction
        if form.validate_on_submit():
            username = request.form['username']
            email = request.form['email']
            passhash = Account.get_hashed_password(request.form['password'])
            query = sqlalchemy.text(
                'insert into account (username, email, passhash) values (:username, :email, :passhash)'
            )
            db.engine.execute(query.execution_options(autocommit=True),
                              username=username,
                              email=email,
                              passhash=passhash)

            user = Account.query.filter_by(username=username).first()
            login_user(user)

            query = sqlalchemy.text(
                'insert into Request_Prediction (user_id) values (:user_id)')
            db.engine.execute(query.execution_options(autocommit=True),
                              user_id=current_user.id)

            # TODO: consider adding option to choose test case in UI
            import_csvs_by_filepath()

            return redirect(url_for('index'))
    return render_template('register.html', form=form)