Beispiel #1
0
def register():
    form = RegistrationForm(request.form)
    adminExists = User.query.filter_by(admin=True).first()

    if request.method == 'POST' and form.validate():
        #user = User(form.username.data, form.password.data)
        user = User.query.filter_by(username=form.username.data).first()

        if user:
            return render_template(
                "register/register.html",
                form=form,
                error="Antamasi käyttäjätunnus löytyy jo tietokannasta!")

        if not adminExists:
            u = User(form.name.data, form.username.data, form.password2.data)
            u.active = True
            u.admin = True
        else:
            u = User(form.name.data, form.username.data, form.password2.data)
            u.active = True
            u.admin = False

        db.session().add(u)
        db.session.commit()
        return redirect(url_for('auth_login'))
    elif not adminExists:
        return render_template('register/register_admin.html', form=form)
    else:
        return render_template('register/register.html', form=form)

    return render_template('register/register.html', form=form)
Beispiel #2
0
def _create_user_with_password(email, user_type, password):
    user = User(email=email)
    user.user_type = user_type
    user.capabilities = CAPABILITIES[user_type]
    user.active = True
    user.password = hash_password(password)
    user.confirmed_at = datetime.utcnow()

    db.session.add(user)
    db.session.commit()
Beispiel #3
0
def user(id=None):

    if not id is None:
        user = User.query.get(id)
        if user is None:
            return redirect(url_for('userlist'))
    else:
        user = None

    companies = [("", "---")] + [(str(c.id), c.name)
                                 for c in Company.query.all()]
    userroles = [(str(r.id), r.name) for r in Role.query.all()]

    # GET
    if request.method == "GET":
        if user is None:
            form = NewUserForm()
        else:
            selectedroles = [(str(r.role_id)) for r in UserRole.query.filter(
                UserRole.account_id.__eq__(user.id)).all()]
            form = UserForm(obj=user, userroles=selectedroles)
        form.company_id.choices = companies
        form.userroles.choices = userroles
        return render_template("/user/edit.html", user=user, form=form)

    # POST
    cancel = request.form.get("cancel")
    if not cancel is None:
        return redirect(url_for('userlist'))

    if user is None:
        form = NewUserForm(request.form, companies=companies)
    else:
        form = UserForm(request.form, obj=user, companies=companies)
    form.company_id.choices = companies
    form.userroles.choices = userroles

    if not form.validate():
        return render_template("/user/edit.html", user=user, form=form)

    if user is None:
        user = User(form.username.data, form.firstname.data,
                    form.lastname.data, form.password.data,
                    form.company_id.data, form.active.data)
        db.session.add(user)
    else:
        user.company_id = form.company_id.data
        user.firstname = form.firstname.data
        user.lastname = form.lastname.data
        user.active = form.active.data

    try:
        db.session().commit()
    except (DBAPIError, SQLAlchemyError, IntegrityError) as ex2:
        form.errors["general"] = ["Käyttäjän tallentaminen ei onnistunut."]
        return render_template("/user/edit.html", user=user, form=form)

    # SAVE roles
    try:
        # First delete all existing roles
        if not id is None:
            sql = text('delete from accountrole where account_id=' +
                       str(user.id))
            db.engine.execute(sql)

        # Then add new roles
        for role_id in form.userroles.data:
            userrole = UserRole(int(role_id), user.id)
            db.session.add(userrole)

        db.session().commit()
    except (DBAPIError, SQLAlchemyError, IntegrityError) as ex2:
        form.errors["general"] = [
            "Käyttäjäryhmien tallentaminen ei onnistunut."
        ]
        return render_template("/user/edit.html", user=user, form=form)

    flash('Käyttäjän tallentaminen onnistui', 'user')
    return redirect(url_for('user', id=user.id))