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)
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()
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))