From a07002ee9cb472f8317a87e9167f79fa34a5e85e Mon Sep 17 00:00:00 2001 From: Guillaume Subiron Date: Wed, 30 May 2012 10:53:03 +0200 Subject: [PATCH] Check values in user_edit to avoid sqlite integrity errors --- main.py | 25 ++++++++++++++++++------- templates/user.html | 2 +- templates/user_edit.html | 3 +-- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/main.py b/main.py index 2ab60f8..9556f96 100755 --- a/main.py +++ b/main.py @@ -112,19 +112,30 @@ def login_key(userid, key): def user(userid): if int(userid) != session.get('user').get('id'): abort(401) - return render_template('user.html') + groups = query_db('select * from roles join user_role on id=id_role where id_user = ?', userid) + return render_template('user.html', groups=groups) @app.route('/user/settings/', methods=['GET', 'POST']) def user_edit(userid): if int(userid) != session.get('user').get('id'): abort(401) if request.method == 'POST': - g.db.execute('update users set email = ?, name = ?, organization = ? where id = ?', - [request.form['email'], request.form['name'], request.form['organization'], session['user']['id']]) - g.db.commit() - disconnect_user() # :TODO:maethor:120528: Maybe useless, but this is simple way to refresh session :D - flash(u'Votre profil a été mis à jour !', 'success') - return redirect(url_for('login')) + if query_db('select * from users where email=? and id!=?', [request.form['email'], userid], one=True) is None: + if query_db('select * from users where name=? and id!=?', [request.form['name'], userid], one=True) is None: + g.db.execute('update users set email = ?, name = ?, organization = ? where id = ?', + [request.form['email'], request.form['name'], request.form['organization'], session['user']['id']]) + g.db.commit() + disconnect_user() # :TODO:maethor:120528: Maybe useless, but this is simple way to refresh session :D + user = query_db('select * from users where id=?', [userid], one=True) + if user is None: + flash(u'Une erreur s\'est produite.', 'error') + return redirect(url_for('login')) + connect_user(user) + flash(u'Votre profil a été mis à jour !', 'success') + else: + flash(u'Le nom ' + request.form['name'] + u' est déjà pris ! Veuillez en choisir un autre.', 'error') + else: + flash(u'Il existe déjà un compte pour cette adresse e-mail : ' + request.form['email'], 'error') return render_template('user_edit.html') @app.route('/user/password/', methods=['GET', 'POST']) diff --git a/templates/user.html b/templates/user.html index e639252..0fc5503 100644 --- a/templates/user.html +++ b/templates/user.html @@ -8,7 +8,7 @@
Association :
{{ session.user.organization }}
Groupes : -
à venir +
{% for group in groups %}{{ group.name }} {% endfor %} Modifier diff --git a/templates/user_edit.html b/templates/user_edit.html index ce02061..7c0d337 100644 --- a/templates/user_edit.html +++ b/templates/user_edit.html @@ -1,11 +1,10 @@ {% extends "layout.html" %} {% block body %} -

{{ session.username }}

+

{{ session.user.name }}

Mise à jour du profil utilisateur -
Attention : À l'issue de ce formulaire, vous devrez vous reconnecter
-- 2.20.1