public = 1
if 'multiplechoice' in request.form.keys():
multiplechoice = 1
- g.db.execute('insert into votes (title, description, date_begin, date_end, is_transparent, is_public, is_multiplechoice) values (?, ?, ?, ?, ?, ?, ?)',
- [request.form['title'], request.form['description'], date_begin, date_end, transparent, public, multiplechoice])
+ role = query_db('select id from roles where name = ?', [request.form['role']], one=True)
+ if role is None:
+ role[id] = 1
+ g.db.execute('insert into votes (title, description, category, date_begin, date_end, is_transparent, is_public, is_multiplechoice, id_role, id_author) values (?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
+ [request.form['title'], request.form['description'], request.form['category'], date_begin, date_end, transparent, public, multiplechoice, role['id'], session['user']['id']])
g.db.commit()
vote = query_db('select * from votes where title = ? and date_begin = ? order by id desc',
[request.form['title'], date_begin], one=True) # :DEBUG:maethor:20120528: Bug possible car le titre n'est pas unique
return redirect(url_for('edit_vote', voteid=vote['id']))
else:
flash(u'Vous devez spécifier un titre.', 'error')
- return render_template('new_vote.html')
+ groups = query_db('select * from roles')
+ return render_template('new_vote.html', groups=groups)
@app.route('/votes/admin/edit/<voteid>', methods=['GET', 'POST'])
def edit_vote(voteid):
vote = query_db('select * from votes where id = ?', [voteid], one=True)
if vote is None:
abort(404)
- #if request.method == 'POST':
- # :TODO:maethor:20120528
+ if request.method == 'POST':
+ if request.form['title']:
+ # :TODO:maethor:120529: Calculer date_begin pour pouvoir y ajouter duration et obtenir date_end
+ transparent = 0
+ public = 0
+ if 'transparent' in request.form.keys():
+ transparent = 1
+ if 'public' in request.form.keys():
+ public = 1
+ isopen = 0
+ if request.form['status'] == 'Ouvert':
+ isopen = 1
+ g.db.execute('update votes set title = ?, description = ?, category = ?, is_transparent = ?, is_public = ?, is_open = ? where id = ?',
+ [request.form['title'], request.form['description'], request.form['category'], transparent, public, isopen, voteid])
+ g.db.commit()
+ vote = query_db('select * from votes where id = ?', [voteid], one=True)
+ flash(u"Le vote a bien été mis à jour.", "success")
+ else:
+ flash(u'Vous devez spécifier un titre.', 'error')
+
+ # :TODO:maethor:20120529: Calculer la durée du vote (différence date_end - date_begin)
+ vote['duration'] = 15
+ group = query_db('select name from roles where id = ?', [vote['id_role']], one=True)
choices = query_db('select * from choices where id_vote = ?', [voteid])
- return render_template('edit_vote.html', vote=vote, choices=choices)
+ return render_template('edit_vote.html', vote=vote, group=group, choices=choices)
@app.route('/votes/admin/addchoice/<voteid>', methods=['POST'])
def add_choice(voteid):
drop table if exists choices;
drop table if exists votes;
+drop table if exists roles;
drop table if exists users;
create table users (
key TEXT
);
+create table roles (
+ id INTEGER primary key autoincrement,
+ name TEXT
+);
+
create table votes (
id INTEGER primary key autoincrement,
title TEXT not null,
is_weighted INTEGER default 0 not null,
is_open INTEGER default 0 not null,
id_author INTEGER, -- :COMMENT:maethor:120528: not null ?
- --id_role INTEGER,
+ id_role INTEGER default 1 not null,
FOREIGN KEY(id_author) REFERENCES users(id)
- --FOREIGN KEY(id_role) REFERENCES role(id)
+ FOREIGN KEY(id_role) REFERENCES roles(id)
);
create table choices (
-- Test data
insert into users (email, password, name, organization, is_admin, key) values ("admin@admin.fr", "admin", "Toto (admin) Tata", "World corp", 1, "test");
+insert into roles (id, name) values (1, "Tous");
+insert into roles (name) values ("CA");
+insert into roles (name) values ("Members");
<div class="control-group">
<label class="control-label" for="description">Description</label>
<div class="controls">
- <textarea class="input-xlarge" name="description" id="description" value="{{ vote.description }}"></textarea>
+ <textarea class="input-xlarge" name="description" id="description">{{ vote.description }}</textarea>
</div>
</div>
<div class="accordion">
<div class="control-group">
<label class="control-label" for="category">Catégorie</label>
<div class="controls">
- <input type="text" data-provide="typeahead" data-source='["ca","membres"]' size=30 name="category" id="category" value="{{ request.form.category }}" />
+ <input type="text" data-provide="typeahead" data-source='["ca","membres"]' size=30 name="category" id="category" value="{{ vote.category }}" />
</div>
</div>
<div class="control-group">
<label class="control-label" for="role">Groupe</label>
<div class="controls">
<select name="role" id="role" disabled>
- <option selected>Tous</option>
- <option>CA</option>
- <option>Membres</option>
+ <option>{{ group.name }}</option>
</select>
<p class="help-block">Groupe d'utilisateur concernés par le vote et ayant le droit de voter</p>
</div>
</div>
- </div>
- </div>
- </div>
- <div class="accordion-group">
- <div class="accordion-heading">
- <a class="accordion-toggle" data-toggle="collapse" href="#options">+ Options</a>
- </div>
- <div id="options" class="accordion-body collapse">
- <div class="accordion-inner">
<div class="control-group">
<label class="control-label" for="days">Durée (jours)</label>
<div class="controls">
<select class="span1" name="days" id="days">
{% for i in range(1, 31) %}
- {% if i == 20 %}
+ {% if i == vote.duration %}
<option selected>{{ i }}</option>
{% else %}
<option>{{ i }}</option>
{% endif %}
{% endfor %}
</select>
+ <span class="help-inline">Du {{ vote.date_begin }} au {{ vote.date_end }}</span>
</div>
</div>
+ </div>
+ </div>
+ </div>
+ <div class="accordion-group">
+ <div class="accordion-heading">
+ <a class="accordion-toggle" data-toggle="collapse" href="#options">+ Options</a>
+ </div>
+ <div id="options" class="accordion-body collapse">
+ <div class="accordion-inner">
<div class="control-group">
<label class="control-label">Options</label>
<div class="controls">
<label class="checkbox">
- <input type="checkbox" name="transparent" />
+ <input type="checkbox" name="transparent" {% if vote.is_transparent == 1 %} checked {% endif %} />
Les votants peuvent-ils voir le choix des autres ?
</label>
<label class="checkbox">
- <input type="checkbox" name="public" />
+ <input type="checkbox" name="public" {% if vote.is_public == 1 %} checked {% endif %}/>
Le vote est-il visible par tous ?
</label>
- {% if not vote.is_open %}
<label class="checkbox">
- <input type="checkbox" name="multiplechoice" disabled/>
+ <input type="checkbox" name="multiplechoice" {% if vote.is_multiplechoice == 1 %} checked {% endif %} disabled/>
Les votants peuvent-ils choisir plusieurs options ?
</label>
- {% endif %}
</div>
</div>
</div>
{% extends "layout.html" %}
{% block body %}
<div class="row">
- <div class="span3 well">
+ <div class="span3 well offset1">
<form action="{{ url_for('login') }}" method="post">
<fieldset><legend>Connexion</legend>
<label for="username">E-mail</label>
<label class="control-label" for="role">Groupe</label>
<div class="controls">
<select name="role" id="role">
- <option selected>Tous</option>
- <option>CA</option>
- <option>Membres</option>
+ {% for group in groups %}
+ <option>{{ group.name }}</option>
+ {% endfor %}
</select>
<p class="help-block">Groupe d'utilisateur concernés par le vote et ayant le droit de voter</p>
</div>