Admin roles
authorGuillaume Subiron <maethor@subiron.org>
Tue, 29 May 2012 10:03:42 +0000 (12:03 +0200)
committerJulien Rabier <taziden@flexiden.org>
Tue, 29 May 2012 10:13:40 +0000 (12:13 +0200)
main.py
schema.sql
templates/edit_vote.html
templates/layout.html
templates/show_roles.html [new file with mode: 0644]

diff --git a/main.py b/main.py
index bdbd032..7ff598f 100755 (executable)
--- a/main.py
+++ b/main.py
@@ -165,6 +165,41 @@ def add_user():
             flash(u"Vous devez spécifier une adresse email.", 'error')
     return render_template('add_user.html')
 
+#-------------
+# Roles admin
+
+@app.route('/roles')
+def show_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)
+
+@app.route('/roles/admin/add', methods=['POST'])
+def add_role():
+    if not session.get('user').get('is_admin'):
+        abort(401)
+    if request.method == 'POST':
+        if request.form['name']:
+            g.db.execute('insert into roles (name) values (?)', [request.form['name']])
+            g.db.commit()
+        else:
+            flash(u"Vous devez spécifier un nom.", "error")
+    return redirect(url_for('show_roles'))
+
+@app.route('/roles/admin/delete/<idrole>')
+def del_role(idrole):
+    if not session.get('user').get('is_admin'):
+        abort(401)
+    role = query_db('select * from roles where id = ?', [idrole], one=True)
+    if role is None:
+        abort(404)
+    if role['system']:
+        abort(401)
+    g.db.execute('delete from roles where id = ?', [idrole])
+    g.db.commit()
+    return redirect(url_for('show_roles'))
+
 #------------
 # Votes list
 
index 39f1170..f52b8b4 100644 (file)
@@ -15,7 +15,8 @@ create table users (
 
 create table roles (
     id INTEGER primary key autoincrement,
-    name TEXT
+    name TEXT,
+    system INTEGER default 0 not null 
 );
 
 create table votes (
@@ -46,7 +47,7 @@ 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 (id, name, system) values (1, "Tous", 1);
 insert into roles (name) values ("CA");
 insert into roles (name) values ("Members");
 
index 881b6d7..c5dde3d 100644 (file)
     </form>
   </div>
 
-  <div class="span5 well">
+  <div class="span5 well pull-right">
     <fieldset><legend>Choix</legend>
       <table class="table table-stripped table-condensed">
         <thead>
index cbcef49..29f0045 100644 (file)
@@ -28,6 +28,7 @@
         <li><a href="{{ url_for('add_vote') }}">Nouveau vote</a></li>
         <li class="divider"></li>
         <!--<li><a href="404">Utilisateurs</a></li>-->
+        <li><a href="{{ url_for('show_roles') }}">Groupes</a></li>
         <li><a href="{{ url_for('add_user') }}">Nouvel utilisateur</a></li>
       </ul>
       {% endif %}
diff --git a/templates/show_roles.html b/templates/show_roles.html
new file mode 100644 (file)
index 0000000..c7bf157
--- /dev/null
@@ -0,0 +1,47 @@
+{% extends "layout.html" %}
+{% 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 %}
+