Renaming
authorGuillaume Subiron <maethor@subiron.org>
Tue, 29 May 2012 19:18:52 +0000 (21:18 +0200)
committerJulien Rabier <taziden@flexiden.org>
Tue, 29 May 2012 19:35:57 +0000 (21:35 +0200)
17 files changed:
main.py
templates/add_user.html [deleted file]
templates/admin_roles.html [new file with mode: 0644]
templates/admin_user_new.html [new file with mode: 0644]
templates/admin_vote_edit.html [new file with mode: 0644]
templates/admin_vote_new.html [new file with mode: 0644]
templates/admin_votes.html
templates/edit_vote.html [deleted file]
templates/layout.html
templates/new_vote.html [deleted file]
templates/show_roles.html [deleted file]
templates/show_user.html [deleted file]
templates/show_votes.html [deleted file]
templates/user.html [new file with mode: 0644]
templates/user_edit.html [new file with mode: 0644]
templates/user_settings.html [deleted file]
templates/votes.html [new file with mode: 0644]

diff --git a/main.py b/main.py
index 298c721..b00b879 100755 (executable)
--- a/main.py
+++ b/main.py
@@ -50,7 +50,7 @@ def valid_login(username, password):
     return query_db('select * from users where email = ? and password = ?', [username, password], one=True)
 
 def connect_user(user):
-    session['user'] = user # :KLUDGE:maethor:120528: Stoquer toute la ligne de la table users dans la session, c'est un peu crade
+    session['user'] = user # :KLUDGE:maethor:120528: Stoquer toute la ligne de la table users dans la session, c'est un peu crade
     #session['user']['id'] = user['id']
     #session['user']['name'] = user['name']
     #session['user']['email'] = user['email']
@@ -90,7 +90,7 @@ def password_lost():
         if user is None:
             flash('Cet utilisateur n\'existe pas !', 'error')
         else:
-            # :TODO:maethor:120528: Générer la clé, la mettre dans la base de données et envoyer le mail
+            # :TODO:maethor:120528: Generer la cle, la mettre dans la base de données et envoyer le mail
             flash(u"Un mail a été envoyé à " + user['email'], 'info')
     return render_template('password_lost.html')
 
@@ -109,13 +109,13 @@ def login_key(userid, key):
 # User settings
 
 @app.route('/user/<userid>')
-def show_user(userid):
+def user(userid):
     if int(userid) != session.get('user').get('id'):
         abort(401)
-    return render_template('show_user.html')
+    return render_template('user.html')
 
 @app.route('/user/settings/<userid>', methods=['GET', 'POST'])
-def user_settings(userid):
+def user_edit(userid):
     if int(userid) != session.get('user').get('id'):
         abort(401)
     if request.method == 'POST':
@@ -125,7 +125,7 @@ def user_settings(userid):
         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'))
-    return render_template('user_settings.html')
+    return render_template('user_edit.html')
 
 @app.route('/user/password/<userid>', methods=['GET', 'POST'])
 def user_password(userid):
@@ -139,20 +139,20 @@ def user_password(userid):
             flash(u'Votre mot de passe a été mis à jour.', 'success')
         else:
             flash(u'Les mots de passe sont différents.', 'error')
-    return render_template('user_settings.html')
+    return render_template('user_edit.html')
 
 #------------
 # User admin
 
-@app.route('/users/admin/list')
+@app.route('/admin/users')
 def admin_users():
     if not session.get('user').get('is_admin'):
         abort(401)
     users = query_db('select * from users order by id desc')
     return render_template('admin_users.html', users=users)
 
-@app.route('/users/admin/add', methods=['GET', 'POST'])
-def add_user():
+@app.route('/admin/users/add', methods=['GET', 'POST'])
+def admin_user_add():
     if not session.get('user').get('is_admin'):
         abort(401)
     if request.method == 'POST':
@@ -170,20 +170,20 @@ def add_user():
             return redirect(url_for('home'))
         else:
             flash(u"Vous devez spécifier une adresse email.", 'error')
-    return render_template('add_user.html')
+    return render_template('admin_user_new.html')
 
 #-------------
 # Roles admin
 
-@app.route('/roles')
-def show_roles():
+@app.route('/admin/roles')
+def admin_roles():
     if not session.get('user').get('is_admin'):
         abort(401)
     roles = query_db('select * from roles')
-    return render_template('show_roles.html', roles=roles)
+    return render_template('admin_roles.html', roles=roles)
 
-@app.route('/roles/admin/add', methods=['POST'])
-def add_role():
+@app.route('/admin/roles/add', methods=['POST'])
+def admin_role_add():
     if not session.get('user').get('is_admin'):
         abort(401)
     if request.method == 'POST':
@@ -192,10 +192,10 @@ def add_role():
             g.db.commit()
         else:
             flash(u"Vous devez spécifier un nom.", "error")
-    return redirect(url_for('show_roles'))
+    return redirect(url_for('admin_roles'))
 
-@app.route('/roles/admin/delete/<idrole>')
-def del_role(idrole):
+@app.route('/admin/roles/delete/<idrole>')
+def admin_role_del(idrole):
     if not session.get('user').get('is_admin'):
         abort(401)
     role = query_db('select * from roles where id = ?', [idrole], one=True)
@@ -205,13 +205,13 @@ def del_role(idrole):
         abort(401)
     g.db.execute('delete from roles where id = ?', [idrole])
     g.db.commit()
-    return redirect(url_for('show_roles'))
+    return redirect(url_for('admin_roles'))
 
 #------------
 # Votes list
 
 @app.route('/votes/<votes>')
-def show_votes(votes):
+def votes(votes):
     today = date.today()
     active_button = votes
     basequery = 'select *, roles.name as rolename from votes join roles on roles.id=votes.id_role where is_open=1'
@@ -223,7 +223,7 @@ def show_votes(votes):
         votes = query_db(basequery + ' and date_end >= (?) order by id desc', [today])
     else:
         abort(404)
-    return render_template('show_votes.html', votes=votes, active_button=active_button)
+    return render_template('votes.html', votes=votes, active_button=active_button)
 
 #------
 # Vote
@@ -241,7 +241,7 @@ def can_vote(idvote, iduser=-1):
     return True # :TODO:maethor:20120529: Check others things
 
 @app.route('/vote/<idvote>')
-def show_vote(idvote):
+def vote(idvote):
     vote = query_db('select *, roles.name as rolename from votes join roles on roles.id=votes.id_role where votes.id=?', [idvote], one=True)
     if vote is None:
         abort(404)
@@ -255,15 +255,15 @@ def show_vote(idvote):
 #-------------
 # Votes admin
 
-@app.route('/votes/admin/list')
+@app.route('/admin/votes/list')
 def admin_votes():
     if not session.get('user').get('is_admin'):
         abort(401)
     votes = query_db('select *, roles.name as rolename from votes join roles on roles.id=votes.id_role order by id desc')
     return render_template('admin_votes.html', votes=votes)
 
-@app.route('/votes/admin/add', methods=['GET', 'POST'])
-def add_vote():
+@app.route('/admin/votes/add', methods=['GET', 'POST'])
+def admin_vote_add():
     if not session.get('user').get('is_admin'):
         abort(401)
     if request.method == 'POST':
@@ -292,14 +292,14 @@ def add_vote():
                 return redirect(url_for('home'))
             else:
                 flash(u"Le vote a été créé", 'info')
-                return redirect(url_for('edit_vote', voteid=vote['id']))
+                return redirect(url_for('admin_vote_edit', voteid=vote['id']))
         else:
             flash(u'Vous devez spécifier un titre.', 'error')
     groups = query_db('select * from roles') 
-    return render_template('new_vote.html', groups=groups)
+    return render_template('admin_vote_new.html', groups=groups)
 
-@app.route('/votes/admin/edit/<voteid>', methods=['GET', 'POST'])
-def edit_vote(voteid):
+@app.route('/admin/votes/edit/<voteid>', methods=['GET', 'POST'])
+def admin_vote_edit(voteid):
     if not session.get('user').get('is_admin'):
         abort(401)
     vote = query_db('select * from votes where id = ?', [voteid], one=True)
@@ -329,10 +329,10 @@ def edit_vote(voteid):
     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, group=group, choices=choices)
+    return render_template('admin_vote_edit.html', vote=vote, group=group, choices=choices)
 
-@app.route('/votes/admin/addchoice/<voteid>', methods=['POST'])
-def add_choice(voteid):
+@app.route('/admin/votes/addchoice/<voteid>', methods=['POST'])
+def admin_vote_addchoice(voteid):
     if not session.get('user').get('is_admin'):
         abort(401)
     vote = query_db('select * from votes where id = ?', [voteid], one=True)
@@ -340,10 +340,10 @@ def add_choice(voteid):
         abort(404)
     g.db.execute('insert into choices (name, id_vote) values (?, ?)', [request.form['title'], voteid])
     g.db.commit()
-    return redirect(url_for('edit_vote', voteid=voteid))
+    return redirect(url_for('admin_vote_edit', voteid=voteid))
 
-@app.route('/votes/admin/editchoice/<voteid>/<choiceid>', methods=['POST', 'DELETE'])
-def edit_choice(voteid, choiceid):
+@app.route('/admin/votes/editchoice/<voteid>/<choiceid>', methods=['POST', 'DELETE'])
+def admin_vote_editchoice(voteid, choiceid):
     if not session.get('user').get('is_admin'):
         abort(401)
     choice = query_db('select * from choices where id = ? and id_vote = ?', [choiceid, voteid], one=True)
@@ -355,10 +355,10 @@ def edit_choice(voteid, choiceid):
     elif request.method == 'DELETE': # :COMMENT:maethor:20120528: I can't find how to use it from template
         g.db.execute('delete from choices where id = ? and id_vote = ?', [choiceid, voteid])
         g.db.commt()
-    return redirect(url_for('edit_vote', voteid=voteid))
+    return redirect(url_for('admin_vote_edit', voteid=voteid))
 
-@app.route('/votes/admin/deletechoice/<voteid>/<choiceid>')
-def delete_choice(voteid, choiceid):
+@app.route('/admin/votes/deletechoice/<voteid>/<choiceid>')
+def admin_vote_deletechoice(voteid, choiceid):
     if not session.get('user').get('is_admin'):
         abort(401)
     choice = query_db('select * from choices where id = ? and id_vote = ?', [choiceid, voteid], one=True)
@@ -366,7 +366,7 @@ def delete_choice(voteid, choiceid):
         abort(404)
     g.db.execute('delete from choices where id = ? and id_vote = ?', [choiceid, voteid])
     g.db.commit()
-    return redirect(url_for('edit_vote', voteid=voteid))
+    return redirect(url_for('admin_vote_edit', voteid=voteid))
 
 #------
 # Main
diff --git a/templates/add_user.html b/templates/add_user.html
deleted file mode 100644 (file)
index f80a1b8..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-{% extends "layout.html" %}
-{% block body %}
-
-<div class="row">
-  <div class="span7 well">
-<form action="{{ url_for('add_user') }}" method="post" class="form-horizontal">
-<fieldset><legend>Ajouter un utilisateur</legend>
-  <div class="control-group">
-    <label class="control-label" for="email">E-mail</label>
-    <div class="controls">
-      <input type="text" name="email" id="email" value="{{ request.form.email }}" />
-      <span class="help-inline"><font color="red">*</font></span>
-    </div>
-  </div>
-  <div class="control-group">
-    <label class="control-label" for="username">Nom</label>
-    <div class="controls">
-      <input type="text" name="username" id="username" value="{{ request.form.username }}" />
-    </div>
-  </div>
-  <div class="control-group">
-    <label class="control-label" for="organization">Association</label>
-    <div class="controls">
-      <input type="text" data-provide="typeahead" data-source='["FDN","Ilico","Aquilenet"]' size=30 name="organization" id="organization" value="{{ request.form.organization }}" />
-    </div>
-  </div>
-  <div class="control-group">
-    <label class="control-label" for="role">Groupes</label>
-    <div class="controls">
-      <select name="role" id="role" multiple>
-        <option selected>CA</option>
-        <option>Membres</option>
-      </select>
-    </div>
-  </div>
-  <div class="control-group">
-    <label class="control-label">Options</label>
-    <div class="controls">
-      <label class="checkbox">
-        <input type="checkbox" name="admin" />
-        L'utilisateur est-il administrateur ?
-      </label>
-    </div>
-  </div>
-  <div class="form-actions">
-    <input type="submit" class="btn btn-primary" value="Créer l'utilisateur" />
-  </div>
-</fieldset>
-</form>
-  </div>
-</div>
-
-{% endblock %}
diff --git a/templates/admin_roles.html b/templates/admin_roles.html
new file mode 100644 (file)
index 0000000..7772337
--- /dev/null
@@ -0,0 +1,48 @@
+{% extends "layout.html" %}
+{% block subtitle %}Administrer les votes{% endblock %}
+{% block body %}
+<div class="row">
+<div class="span6 well">
+  <h2>Groupes</h2>
+  <hr />
+  {% if not roles %}
+  <div class="alert">Il n'y a aucun role.</div>
+  {% else %}
+  <table class="table table-stripped">
+    <thead>
+    <tr>
+      <th>Nom</th>
+      <th>Membres</th>
+      <th>Votes</th>
+      <th>Actions</th>
+    </tr>
+    </thead>
+    <tbody>
+    {% for role in roles %}
+    <tr>
+        <td><strong>{{ role.name }}</strong></td>
+        <td>TODO</td>
+        <td>TODO</td>
+        <td>{% if role.system %}<span class="label label-warning">system</span>{% else %}<a href="{{ url_for('admin_role_del', idrole=role.id) }}" class="btn btn-danger btn-mini">Supprimer</a>{% endif %}</td>
+    </tr>
+    {% endfor %}
+    </tbody>
+  </table>
+  <p>
+  <small>Les groupes « system » ne sont pas modifiables.</small>
+  </p>
+  {% endif %}
+</div>
+
+<div class="span5 well">
+  <form action="{{ url_for('admin_role_add') }}" method="post" class="form-inline">
+  <fieldset><legend>Ajouter un groupe</legend>
+      <br />
+      <input type="text" name="name" id="name" value="Nom" />
+      <input type="submit" class="btn btn-primary" value="Ajouter" />
+  </fieldset>
+  </form>
+</div>
+</div>
+{% endblock %}
+
diff --git a/templates/admin_user_new.html b/templates/admin_user_new.html
new file mode 100644 (file)
index 0000000..e3678d0
--- /dev/null
@@ -0,0 +1,53 @@
+{% extends "layout.html" %}
+{% block body %}
+
+<div class="row">
+  <div class="span7 well">
+<form action="{{ url_for('admin_user_add') }}" method="post" class="form-horizontal">
+<fieldset><legend>Ajouter un utilisateur</legend>
+  <div class="control-group">
+    <label class="control-label" for="email">E-mail</label>
+    <div class="controls">
+      <input type="text" name="email" id="email" value="{{ request.form.email }}" />
+      <span class="help-inline"><font color="red">*</font></span>
+    </div>
+  </div>
+  <div class="control-group">
+    <label class="control-label" for="username">Nom</label>
+    <div class="controls">
+      <input type="text" name="username" id="username" value="{{ request.form.username }}" />
+    </div>
+  </div>
+  <div class="control-group">
+    <label class="control-label" for="organization">Association</label>
+    <div class="controls">
+      <input type="text" data-provide="typeahead" data-source='["FDN","Ilico","Aquilenet"]' size=30 name="organization" id="organization" value="{{ request.form.organization }}" />
+    </div>
+  </div>
+  <div class="control-group">
+    <label class="control-label" for="role">Groupes</label>
+    <div class="controls">
+      <select name="role" id="role" multiple>
+        <option selected>CA</option>
+        <option>Membres</option>
+      </select>
+    </div>
+  </div>
+  <div class="control-group">
+    <label class="control-label">Options</label>
+    <div class="controls">
+      <label class="checkbox">
+        <input type="checkbox" name="admin" />
+        L'utilisateur est-il administrateur ?
+      </label>
+    </div>
+  </div>
+  <div class="form-actions">
+    <input type="submit" class="btn btn-primary" value="Créer l'utilisateur" />
+  </div>
+</fieldset>
+</form>
+  </div>
+</div>
+
+{% endblock %}
diff --git a/templates/admin_vote_edit.html b/templates/admin_vote_edit.html
new file mode 100644 (file)
index 0000000..841e15b
--- /dev/null
@@ -0,0 +1,143 @@
+{% extends "layout.html" %}
+{% block body %}
+
+<div class="row">
+  <div class="span6 well">
+    <form action="{{ url_for('admin_vote_edit', voteid=vote['id']) }}" method="post" class="form-horizontal">
+      <fieldset><legend>Édition du vote</legend>
+      <div class="control-group">
+        <label class="control-label" for="title">Titre</label>
+        <div class="controls">
+          <input type="text" size=30 name="title" id="title" value="{{ vote.title }}" />
+          <span class="help-inline"><font color="red">*</font></span>
+        </div>
+      </div>
+      <div class="control-group">
+        <label class="control-label" for="description">Description</label>
+        <div class="controls">
+          <textarea class="input-xlarge" name="description" id="description">{{ vote.description }}</textarea>
+        </div>
+      </div>
+      <div class="accordion">
+        <div class="accordion-group">
+          <div class="accordion-heading">
+            <a class="accordion-toggle" data-toggle="collapse" href="#infos">+ Informations</a>
+          </div>
+          <div id="infos" class="accordion-body collapse">
+            <div class="accordion-inner">
+              <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="{{ 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>{{ 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 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 == 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" {% 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" {% if vote.is_public == 1 %} checked {% endif %}/>
+                    Le vote est-il visible par tous ?
+                  </label>
+                  <label class="checkbox">
+                    <input type="checkbox" name="multiplechoice" {% if vote.is_multiplechoice == 1 %} checked {% endif %} disabled/>
+                    Les votants peuvent-ils choisir plusieurs options ?
+                  </label>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+      <div class="control-group">
+        <label class="control-label" for="status">Statut</label>
+        <div class="controls">
+          <select class="span2" name="status" id="status">
+            {% if vote.is_open %}
+              <option>Fermé</option>
+              <option selected>Ouvert</option>
+            {% else %}
+              <option selected>Fermé</option>
+              <option>Ouvert</option>
+            {% endif %}
+          </select>
+        </div>
+      </div>
+      <div class="form-actions">
+        <input type="submit" class="btn btn-primary" value="Enregistrer" />
+        <input type="reset" class="btn" value="Annuler" />
+      </div>
+    </fieldset>
+    </form>
+  </div>
+
+  <div class="span5 well pull-right">
+    <fieldset><legend>Choix</legend>
+      <table class="table table-stripped table-condensed">
+        <thead>
+          <tr>
+            <th>Titre
+            <th>Actions
+          </tr>
+        </thead>
+        <tbody>
+        {% for choice in choices %}
+          <tr>
+            <form action="{{ url_for('admin_vote_editchoice', voteid=vote.id, choiceid=choice.id) }}" method="post">
+              <td><input type="text" name="title" value="{{ choice.name }}" /></td>
+              <td><input type="submit" class="btn btn-small" value="Sauver" /> 
+                  <a href="{{ url_for('admin_vote_deletechoice', voteid=vote.id, choiceid=choice.id) }}" class="btn btn-small btn-danger">Supprimer</a></td>
+            </form>
+          </tr>
+        {% endfor %}
+        </tbody>
+        <tfoot>
+          <tr>
+            <form action="{{ url_for('admin_vote_addchoice', voteid=vote.id) }}" method="post">
+              <td><input type="text" name="title" value="Nouveau choix" /></td>
+              <td><input type="submit" class="btn btn-small btn-primary" value="+ Ajouter" />
+            </form>
+          </tr>
+        </tfoot>
+      </table>
+    </fieldset>
+  </div>
+</div>
+
+{% endblock %}
diff --git a/templates/admin_vote_new.html b/templates/admin_vote_new.html
new file mode 100644 (file)
index 0000000..a9019bb
--- /dev/null
@@ -0,0 +1,77 @@
+{% extends "layout.html" %}
+{% block body %}
+
+<div class="row">
+  <div class="span7 well">
+<form action="{{ url_for('admin_vote_add') }}" method="post" class="form-horizontal">
+<fieldset><legend>Ajouter un vote</legend>
+  <div class="control-group">
+    <label class="control-label" for="title">Titre</label>
+    <div class="controls">
+      <input type="text" size=30 name="title" id="title" value="{{ request.form.title }}" />
+      <span class="help-inline"><font color="red">*</font></span>
+    </div>
+  </div>
+  <div class="control-group">
+    <label class="control-label" for="description">Description</label>
+    <div class="controls">
+      <textarea class="input-xlarge" name="description" id="description" value="{{ request.form.description }}"></textarea>
+    </div>
+  </div>
+  <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 }}" />
+    </div>
+  </div>
+  <div class="control-group">
+    <label class="control-label" for="role">Groupe</label>
+    <div class="controls">
+      <select name="role" id="role">
+        {% 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>
+  </div>
+  <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 %}
+        <option selected>{{ i }}</option>
+        {% else %}
+        <option>{{ i }}</option>
+        {% endif %}
+        {% endfor %}
+      </select>
+    </div>
+  </div>
+  <div class="control-group">
+    <label class="control-label">Options</label>
+    <div class="controls">
+      <label class="checkbox">
+        <input type="checkbox" name="transparent" />
+        Les votants peuvent-ils voir le choix des autres ?
+      </label>
+      <label class="checkbox">
+        <input type="checkbox" name="public" />
+        Le vote est-il visible par tous ?
+      </label>
+      <label class="checkbox">
+        <input type="checkbox" name="multiplechoice" />
+        Les votants peuvent-ils choisir plusieurs options ?
+      </label>
+    </div>
+  </div>
+  <div class="form-actions">
+    <input type="submit" class="btn btn-primary" value="Créer le vote" />
+  </div>
+</fieldset>
+</form>
+  </div>
+</div>
+
+{% endblock %}
index e32ff33..9ce015a 100644 (file)
@@ -31,7 +31,7 @@
         {% if vote.is_public %}<span class="label">public</span>{% endif %}
         {% if vote.is_multiplechoice %}<span class="label">choix multiple</span>{% endif %}
       </td>
-      <td><a href="{{ url_for('edit_vote', voteid=vote.id) }}" class="btn btn-mini">Éditer</a></td>
+      <td><a href="{{ url_for('admin_vote_edit', voteid=vote.id) }}" class="btn btn-mini">Éditer</a></td>
     </tr>
     {% endfor %}
     </tbody>
diff --git a/templates/edit_vote.html b/templates/edit_vote.html
deleted file mode 100644 (file)
index c5dde3d..0000000
+++ /dev/null
@@ -1,143 +0,0 @@
-{% extends "layout.html" %}
-{% block body %}
-
-<div class="row">
-  <div class="span6 well">
-    <form action="{{ url_for('edit_vote', voteid=vote['id']) }}" method="post" class="form-horizontal">
-      <fieldset><legend>Édition du vote</legend>
-      <div class="control-group">
-        <label class="control-label" for="title">Titre</label>
-        <div class="controls">
-          <input type="text" size=30 name="title" id="title" value="{{ vote.title }}" />
-          <span class="help-inline"><font color="red">*</font></span>
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="description">Description</label>
-        <div class="controls">
-          <textarea class="input-xlarge" name="description" id="description">{{ vote.description }}</textarea>
-        </div>
-      </div>
-      <div class="accordion">
-        <div class="accordion-group">
-          <div class="accordion-heading">
-            <a class="accordion-toggle" data-toggle="collapse" href="#infos">+ Informations</a>
-          </div>
-          <div id="infos" class="accordion-body collapse">
-            <div class="accordion-inner">
-              <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="{{ 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>{{ 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 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 == 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" {% 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" {% if vote.is_public == 1 %} checked {% endif %}/>
-                    Le vote est-il visible par tous ?
-                  </label>
-                  <label class="checkbox">
-                    <input type="checkbox" name="multiplechoice" {% if vote.is_multiplechoice == 1 %} checked {% endif %} disabled/>
-                    Les votants peuvent-ils choisir plusieurs options ?
-                  </label>
-                </div>
-              </div>
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="status">Statut</label>
-        <div class="controls">
-          <select class="span2" name="status" id="status">
-            {% if vote.is_open %}
-              <option>Fermé</option>
-              <option selected>Ouvert</option>
-            {% else %}
-              <option selected>Fermé</option>
-              <option>Ouvert</option>
-            {% endif %}
-          </select>
-        </div>
-      </div>
-      <div class="form-actions">
-        <input type="submit" class="btn btn-primary" value="Enregistrer" />
-        <input type="reset" class="btn" value="Annuler" />
-      </div>
-    </fieldset>
-    </form>
-  </div>
-
-  <div class="span5 well pull-right">
-    <fieldset><legend>Choix</legend>
-      <table class="table table-stripped table-condensed">
-        <thead>
-          <tr>
-            <th>Titre
-            <th>Actions
-          </tr>
-        </thead>
-        <tbody>
-        {% for choice in choices %}
-          <tr>
-            <form action="{{ url_for('edit_choice', voteid=vote.id, choiceid=choice.id) }}" method="post">
-              <td><input type="text" name="title" value="{{ choice.name }}" /></td>
-              <td><input type="submit" class="btn btn-small" value="Sauver" /> 
-                  <a href="{{ url_for('delete_choice', voteid=vote.id, choiceid=choice.id) }}" class="btn btn-small btn-danger">Supprimer</a></td>
-            </form>
-          </tr>
-        {% endfor %}
-        </tbody>
-        <tfoot>
-          <tr>
-            <form action="{{ url_for('add_choice', voteid=vote.id) }}" method="post">
-              <td><input type="text" name="title" value="Nouveau choix" /></td>
-              <td><input type="submit" class="btn btn-small btn-primary" value="+ Ajouter" />
-            </form>
-          </tr>
-        </tfoot>
-      </table>
-    </fieldset>
-  </div>
-</div>
-
-{% endblock %}
index de19320..1c6f7bd 100644 (file)
   <div class="btn-toolbar">
     <div class="btn-group">
       <a class="btn {% if active_button == 'home' %}active{% endif %}" href="/">Accueil</a>
-      <a class="btn {% if active_button == 'current' %}active{% endif %}" href="{{ url_for('show_votes', votes='current') }}">Votes en cours</a>
-      <a class="btn {% if active_button == 'archive' %}active{% endif %}" href="{{ url_for('show_votes', votes='archive') }}">Archives</a>
+      <a class="btn {% if active_button == 'current' %}active{% endif %}" href="{{ url_for('votes', votes='current') }}">Votes en cours</a>
+      <a class="btn {% if active_button == 'archive' %}active{% endif %}" href="{{ url_for('votes', votes='archive') }}">Archives</a>
       {% if session.user and session.user.is_admin %}
       <a href="#" class="btn btn-warning dropdown-toggle" data-toggle="dropdown">Admin <b class="caret"></b></a>
       <ul class="dropdown-menu pull-right">
-        <li><a href="{{ url_for('add_vote') }}">Nouveau vote</a></li>
+        <li><a href="{{ url_for('admin_vote_add') }}">Nouveau vote</a></li>
         <li><a href="{{ url_for('admin_votes') }}">Administrer les votes</a></li>
         <li class="divider"></li>
         <!--<li><a href="404">Utilisateurs</a></li>-->
-        <li><a href="{{ url_for('add_user') }}">Nouvel utilisateur</a></li>
+        <li><a href="{{ url_for('admin_user_add') }}">Nouvel utilisateur</a></li>
         <li><a href="{{ url_for('admin_users') }}">Administrer les utilisateurs</a></li>
-        <li><a href="{{ url_for('show_roles') }}">Administrer les groupes</a></li>
+        <li><a href="{{ url_for('admin_roles') }}">Administrer les groupes</a></li>
       </ul>
       {% endif %}
     </div>
     <div class="btn-group pull-right">
       {% if 'user' in session %}
-      <a href="{{ url_for('show_user', userid=session.user.id) }}" class="btn"><i class="icon-user"></i> {{ session.user.name }}</a>
+      <a href="{{ url_for('user', userid=session.user.id) }}" class="btn"><i class="icon-user"></i> {{ session.user.name }}</a>
       <a href="#" class="btn dropdown-toggle" data-toggle="dropdown"><b class="caret"></b></a>
       <ul class="dropdown-menu pull-right">
         <li><a href=""><i class="icon-comment"></i> Votes en attente</a></li>
-        <li><a href="{{ url_for('user_settings', userid=session.user.id) }}"><i class="icon-cog"></i> Paramètres</a></li>
+        <li><a href="{{ url_for('user_edit', userid=session.user.id) }}"><i class="icon-cog"></i> Paramètres</a></li>
         <li class="divider"></li>
         <li><a href="{{ url_for('logout') }}"><i class="icon-off"></i> Déconnexion</a></li>
       </ul>
diff --git a/templates/new_vote.html b/templates/new_vote.html
deleted file mode 100644 (file)
index dd24bce..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-{% extends "layout.html" %}
-{% block body %}
-
-<div class="row">
-  <div class="span7 well">
-<form action="{{ url_for('add_vote') }}" method="post" class="form-horizontal">
-<fieldset><legend>Ajouter un vote</legend>
-  <div class="control-group">
-    <label class="control-label" for="title">Titre</label>
-    <div class="controls">
-      <input type="text" size=30 name="title" id="title" value="{{ request.form.title }}" />
-      <span class="help-inline"><font color="red">*</font></span>
-    </div>
-  </div>
-  <div class="control-group">
-    <label class="control-label" for="description">Description</label>
-    <div class="controls">
-      <textarea class="input-xlarge" name="description" id="description" value="{{ request.form.description }}"></textarea>
-    </div>
-  </div>
-  <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 }}" />
-    </div>
-  </div>
-  <div class="control-group">
-    <label class="control-label" for="role">Groupe</label>
-    <div class="controls">
-      <select name="role" id="role">
-        {% 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>
-  </div>
-  <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 %}
-        <option selected>{{ i }}</option>
-        {% else %}
-        <option>{{ i }}</option>
-        {% endif %}
-        {% endfor %}
-      </select>
-    </div>
-  </div>
-  <div class="control-group">
-    <label class="control-label">Options</label>
-    <div class="controls">
-      <label class="checkbox">
-        <input type="checkbox" name="transparent" />
-        Les votants peuvent-ils voir le choix des autres ?
-      </label>
-      <label class="checkbox">
-        <input type="checkbox" name="public" />
-        Le vote est-il visible par tous ?
-      </label>
-      <label class="checkbox">
-        <input type="checkbox" name="multiplechoice" />
-        Les votants peuvent-ils choisir plusieurs options ?
-      </label>
-    </div>
-  </div>
-  <div class="form-actions">
-    <input type="submit" class="btn btn-primary" value="Créer le vote" />
-  </div>
-</fieldset>
-</form>
-  </div>
-</div>
-
-{% endblock %}
diff --git a/templates/show_roles.html b/templates/show_roles.html
deleted file mode 100644 (file)
index 3a7af9f..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-{% extends "layout.html" %}
-{% block subtitle %}Administrer les votes{% endblock %}
-{% block body %}
-<div class="row">
-<div class="span6 well">
-  <h2>Groupes</h2>
-  <hr />
-  {% if not roles %}
-  <div class="alert">Il n'y a aucun role.</div>
-  {% else %}
-  <table class="table table-stripped">
-    <thead>
-    <tr>
-      <th>Nom</th>
-      <th>Membres</th>
-      <th>Votes</th>
-      <th>Actions</th>
-    </tr>
-    </thead>
-    <tbody>
-    {% for role in roles %}
-    <tr>
-        <td><strong>{{ role.name }}</strong></td>
-        <td>TODO</td>
-        <td>TODO</td>
-        <td>{% if role.system %}<span class="label label-warning">system</span>{% else %}<a href="{{ url_for('del_role', idrole=role.id) }}" class="btn btn-danger btn-mini">Supprimer</a>{% endif %}</td>
-    </tr>
-    {% endfor %}
-    </tbody>
-  </table>
-  <p>
-  <small>Les groupes « system » ne sont pas modifiables.</small>
-  </p>
-  {% endif %}
-</div>
-
-<div class="span5 well">
-  <form action="{{ url_for('add_role') }}" method="post" class="form-inline">
-  <fieldset><legend>Ajouter un groupe</legend>
-      <br />
-      <input type="text" name="name" id="name" value="Nom" />
-      <input type="submit" class="btn btn-primary" value="Ajouter" />
-  </fieldset>
-  </form>
-</div>
-</div>
-{% endblock %}
-
diff --git a/templates/show_user.html b/templates/show_user.html
deleted file mode 100644 (file)
index 3ce7513..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-{% extends "layout.html" %}
-{% block body %}
-<h2>{{ session.user.name }}</h2>
-<div class="span8">
-  <dl>
-    <dt>Email :
-    <dd>{{ session.user.email }}
-    <dt>Association :
-    <dd>{{ session.user.organization }}
-    <dt>Groupes :
-    <dd><em>à venir</em>
-  </dl>
-  <a href="{{ url_for('user_settings', userid=session.user.id) }}" class="btn btn-primary">Modifier</a>
-</div>
-{% endblock %}
-
diff --git a/templates/show_votes.html b/templates/show_votes.html
deleted file mode 100644 (file)
index 90fd1f8..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-{% extends "layout.html" %}
-{% block subtitle %}
-Liste des votes
-{% endblock %}
-{% block body %}
-  {% for vote in votes %}
-  <article>
-    <div class="row well">
-      <div class="span4">
-        <h3><a href="{{ url_for('show_vote', idvote=vote.id) }}">{{ vote.title }}</a></h3>
-        <div class="progress progress-striped">
-          <div class="bar" style="width: 60{{ vote.percent }}%;"></div>
-        </div>
-      </div>
-      <div class="span3">
-        <h4>Deadline : {{ vote.date_end }} </h4>
-        <h4>Groupe : {{ vote.rolename }}</h4>
-        <h4>Categorie : {{ vote.category }}</h4>
-      </div>
-      <div class="span3">
-      <h4>Notes</h4>
-      <p>
-      {{ vote.description|safe }}
-      </p>
-    </div>
-  </article>
-  {% else %}
-  <div class="alert">Il n'y a pas encore de votes. Désolé.</div>
-  {% endfor %}
-{% endblock %}
diff --git a/templates/user.html b/templates/user.html
new file mode 100644 (file)
index 0000000..e639252
--- /dev/null
@@ -0,0 +1,16 @@
+{% extends "layout.html" %}
+{% block body %}
+<h2>{{ session.user.name }}</h2>
+<div class="span8">
+  <dl>
+    <dt>Email :
+    <dd>{{ session.user.email }}
+    <dt>Association :
+    <dd>{{ session.user.organization }}
+    <dt>Groupes :
+    <dd><em>à venir</em>
+  </dl>
+  <a href="{{ url_for('user_edit', userid=session.user.id) }}" class="btn btn-primary">Modifier</a>
+</div>
+{% endblock %}
+
diff --git a/templates/user_edit.html b/templates/user_edit.html
new file mode 100644 (file)
index 0000000..ce02061
--- /dev/null
@@ -0,0 +1,61 @@
+{% extends "layout.html" %}
+{% block body %}
+<h2>{{ session.username }}</h2>
+<div class="row">
+  <div class="span6 well">
+    <form class="form-horizontal" action="{{ url_for('user_edit', userid=session.user.id) }}" method="post">
+    <fieldset><legend>Mise à jour du profil utilisateur</legend>
+      <div class="alert"><strong>Attention :</strong> À l'issue de ce formulaire, vous devrez vous reconnecter</div>
+      <div class="control-group">
+        <label class="control-label" for="email">E-mail</label>
+        <div class="controls">
+            <input type="text" name="email" id="email" value="{{ session.user.email }}"/>
+        </div>
+      </div>
+      <div class="control-group">
+          <label class="control-label" for="name">Nom</label>
+          <div class="controls">
+              <input type="text" name="name" id="name" value="{{ session.user.name }}" />
+          </div>
+      </div>
+      <div class="control-group">
+        <label class="control-label" for="organization">Association</label>
+        <div class="controls">
+            <input type="text" name="organization" id="organization" value="{{ session.user.organization }}"/>
+        </div>
+      </div>
+      <!--<label for="password">Mot de passe</label>
+      <input type="password" name="password" id="password" />-->
+      <div class="form-actions">
+        <input type="submit" class="btn btn-primary" value="Enregistrer" />
+        <input type="reset" class="btn" value="Annuler" />
+      </div>
+    </fieldset>
+    </form>
+  </div>
+
+  <div class="span5 well">
+    <form class="form-horizontal" action="{{ url_for('user_password', userid=session.user.id) }}" method="post">
+    <fieldset><legend>Modification du mot de passe</legend>
+      <div class="control-group">
+        <label class="control-label" for="password">Mot de passe</label>
+        <div class="controls">
+            <input type="password" name="password" id="password" />
+        </div>
+      </div>
+      <div class="control-group">
+        <label class="control-label" for="password2">Confirmation</label>
+        <div class="controls">
+            <input type="password" name="password2" id="password2" />
+        </div>
+      </div>
+      <div class="form-actions">
+        <input type="submit" class="btn btn-primary" value="Enregistrer" />
+        <input type="reset" class="btn" value="Annuler" />
+      </div>
+    </fieldset>
+    </form>
+  </div>
+</div>
+{% endblock %}
+
diff --git a/templates/user_settings.html b/templates/user_settings.html
deleted file mode 100644 (file)
index a4d497a..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-{% extends "layout.html" %}
-{% block body %}
-<h2>{{ session.username }}</h2>
-<div class="row">
-  <div class="span6 well">
-    <form class="form-horizontal" action="{{ url_for('user_settings', userid=session.user.id) }}" method="post">
-    <fieldset><legend>Mise à jour du profil utilisateur</legend>
-      <div class="alert"><strong>Attention :</strong> À l'issue de ce formulaire, vous devrez vous reconnecter</div>
-      <div class="control-group">
-        <label class="control-label" for="email">E-mail</label>
-        <div class="controls">
-            <input type="text" name="email" id="email" value="{{ session.user.email }}"/>
-        </div>
-      </div>
-      <div class="control-group">
-          <label class="control-label" for="name">Nom</label>
-          <div class="controls">
-              <input type="text" name="name" id="name" value="{{ session.user.name }}" />
-          </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="organization">Association</label>
-        <div class="controls">
-            <input type="text" name="organization" id="organization" value="{{ session.user.organization }}"/>
-        </div>
-      </div>
-      <!--<label for="password">Mot de passe</label>
-      <input type="password" name="password" id="password" />-->
-      <div class="form-actions">
-        <input type="submit" class="btn btn-primary" value="Enregistrer" />
-        <input type="reset" class="btn" value="Annuler" />
-      </div>
-    </fieldset>
-    </form>
-  </div>
-
-  <div class="span5 well">
-    <form class="form-horizontal" action="{{ url_for('user_password', userid=session.user.id) }}" method="post">
-    <fieldset><legend>Modification du mot de passe</legend>
-      <div class="control-group">
-        <label class="control-label" for="password">Mot de passe</label>
-        <div class="controls">
-            <input type="password" name="password" id="password" />
-        </div>
-      </div>
-      <div class="control-group">
-        <label class="control-label" for="password2">Confirmation</label>
-        <div class="controls">
-            <input type="password" name="password2" id="password2" />
-        </div>
-      </div>
-      <div class="form-actions">
-        <input type="submit" class="btn btn-primary" value="Enregistrer" />
-        <input type="reset" class="btn" value="Annuler" />
-      </div>
-    </fieldset>
-    </form>
-  </div>
-</div>
-{% endblock %}
-
diff --git a/templates/votes.html b/templates/votes.html
new file mode 100644 (file)
index 0000000..d770c2b
--- /dev/null
@@ -0,0 +1,30 @@
+{% extends "layout.html" %}
+{% block subtitle %}
+Liste des votes
+{% endblock %}
+{% block body %}
+  {% for vote in votes %}
+  <article>
+    <div class="row well">
+      <div class="span4">
+        <h3><a href="{{ url_for('vote', idvote=vote.id) }}">{{ vote.title }}</a></h3>
+        <div class="progress progress-striped">
+          <div class="bar" style="width: 60{{ vote.percent }}%;"></div>
+        </div>
+      </div>
+      <div class="span3">
+        <h4>Deadline : {{ vote.date_end }} </h4>
+        <h4>Groupe : {{ vote.rolename }}</h4>
+        <h4>Categorie : {{ vote.category }}</h4>
+      </div>
+      <div class="span3">
+      <h4>Notes</h4>
+      <p>
+      {{ vote.description|safe }}
+      </p>
+    </div>
+  </article>
+  {% else %}
+  <div class="alert">Il n'y a pas encore de votes. Désolé.</div>
+  {% endfor %}
+{% endblock %}