From 692cedd65f1e8a493ac7dce8698b5ad32bd83df3 Mon Sep 17 00:00:00 2001 From: Guillaume Subiron Date: Tue, 5 Jun 2012 11:58:35 +0200 Subject: [PATCH] Choices patterns in vote creation --- main.py | 57 +++++++++++++++++++++++------------ schema.sql | 2 +- templates/admin_user_new.html | 1 + templates/admin_vote_new.html | 11 +++++++ 4 files changed, 50 insertions(+), 21 deletions(-) diff --git a/main.py b/main.py index 22d8c87..78998b0 100755 --- a/main.py +++ b/main.py @@ -22,6 +22,7 @@ EMAIL = '"' + TITLE + '"' + ' <' + u"cavote@ffdn.org" + '>' BASEURL = "http://localhost:5000" VERSION = "cavote 0.0.1" SMTP_SERVER = "10.33.33.30" +PATTERNS = {u'Oui/Non': [u'Oui', u'Non'], u'Oui/Non/Peut-être': [u'Oui', u'Non', u'Peut-être']} app = Flask(__name__) app.config.from_object(__name__) @@ -223,26 +224,37 @@ def admin_user_add(): abort(401) if request.method == 'POST': if request.form['email']: - # :TODO:maethor:120528: Check fields - password = "toto" # :TODO:maethor:120528: Generate password - admin = 0 - if 'admin' in request.form.keys(): - admin = 1 - g.db.execute('insert into users (email, name, organization, password, is_admin, key) values (?, ?, ?, ?, ?, "invalid")', - [request.form['email'], request.form['username'], request.form['organization'], password, admin]) - g.db.commit() - user = query_db('select * from users where email = ?', [request.form["email"]], one=True) - if user: - for group in request.form.getlist('groups'): - if query_db('select id from groups where id = ?', group, one=True) is None: - abort(401) - g.db.execute('insert into user_group values (?, ?)', [user['id'], group]) - g.db.commit() - # :TODO:maethor:120528: Send mail - flash(u'Le nouvel utilisateur a été créé avec succès', 'success') - return redirect(url_for('admin_users')) + if query_db('select * from users where email=?', [request.form['email']], one=True) is None: + if request.form['username']: + if query_db('select * from users where name=?', [request.form['username']], one=True) is None: + # :TODO:maethor:120528: Check fields + password = "toto" # :TODO:maethor:120528: Generate password + admin = 0 + if 'admin' in request.form.keys(): + admin = 1 + g.db.execute('insert into users (email, name, organization, password, is_admin, key) values (?, ?, ?, ?, ?, "invalid")', + [request.form['email'], request.form['username'], request.form['organization'], password, admin]) + g.db.commit() + user = query_db('select * from users where email = ?', [request.form["email"]], one=True) + if user: + groups = request.form.getlist('groups') + groups.append('1') + for group in groups: + if query_db('select id from groups where id = ?', group, one=True) is None: + abort(401) + g.db.execute('insert into user_group values (?, ?)', [user['id'], group]) + g.db.commit() + # :TODO:maethor:120528: Send mail + flash(u'Le nouvel utilisateur a été créé avec succès', 'success') + return redirect(url_for('admin_users')) + else: + flash(u'Une erreur s\'est produite.', 'error') + else: + flash(u'Le nom ' + request.form['username'] + u' est déjà pris ! Veuillez en choisir un autre.', 'error') + else: + flash(u"Vous devez spécifier un nom d'utilisateur.", 'error') else: - flash(u'Une erreur s\'est produite.', 'error') + flash(u'Il existe déjà un compte pour cette adresse e-mail : ' + request.form['email'], 'error') else: flash(u"Vous devez spécifier une adresse email.", 'error') groups = query_db('select * from groups where system=0') @@ -436,6 +448,11 @@ def admin_vote_add(): flash(u'Une erreur est survenue !', 'error') return redirect(url_for('home')) else: + if request.form['pattern'] in PATTERNS.keys(): + pattern = PATTERNS[request.form['pattern']] + for choice in pattern: + g.db.execute('insert into choices (name, id_vote) values (?, ?)', [choice, vote['id']]) + g.db.commit() flash(u"Le vote a été créé", 'info') return redirect(url_for('admin_vote_edit', voteid=vote['id'])) else: @@ -443,7 +460,7 @@ def admin_vote_add(): else: flash(u'Vous devez spécifier un titre.', 'error') groups = query_db('select * from groups') - return render_template('admin_vote_new.html', groups=groups) + return render_template('admin_vote_new.html', groups=groups, patterns=PATTERNS) @app.route('/admin/votes/edit/', methods=['GET', 'POST']) def admin_vote_edit(voteid): diff --git a/schema.sql b/schema.sql index 541fa23..824c4df 100644 --- a/schema.sql +++ b/schema.sql @@ -10,7 +10,7 @@ create table users ( id INTEGER primary key autoincrement, email TEXT unique not null, password TEXT not null, - name TEXT unique, + name TEXT unique not null, organization TEXT, is_admin INTEGER default 0 not null, key TEXT diff --git a/templates/admin_user_new.html b/templates/admin_user_new.html index 0cab732..2b1d50d 100644 --- a/templates/admin_user_new.html +++ b/templates/admin_user_new.html @@ -16,6 +16,7 @@
+ *
diff --git a/templates/admin_vote_new.html b/templates/admin_vote_new.html index 03bf355..165fece 100644 --- a/templates/admin_vote_new.html +++ b/templates/admin_vote_new.html @@ -66,6 +66,17 @@
+
+ +
+ +
+
-- 2.20.1