From: Guillaume Subiron Date: Tue, 29 May 2012 10:03:42 +0000 (+0200) Subject: Admin roles X-Git-Url: http://git.cyclocoop.org/?p=cavote.git;a=commitdiff_plain;h=09d46c3c1c476da11f48f953d257c9fc6e31b8cd Admin roles --- diff --git a/main.py b/main.py index bdbd032..7ff598f 100755 --- 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/') +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 diff --git a/schema.sql b/schema.sql index 39f1170..f52b8b4 100644 --- a/schema.sql +++ b/schema.sql @@ -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"); diff --git a/templates/edit_vote.html b/templates/edit_vote.html index 881b6d7..c5dde3d 100644 --- a/templates/edit_vote.html +++ b/templates/edit_vote.html @@ -107,7 +107,7 @@ -
+
Choix diff --git a/templates/layout.html b/templates/layout.html index cbcef49..29f0045 100644 --- a/templates/layout.html +++ b/templates/layout.html @@ -28,6 +28,7 @@
  • Nouveau vote
  • +
  • Groupes
  • Nouvel utilisateur
  • {% endif %} diff --git a/templates/show_roles.html b/templates/show_roles.html new file mode 100644 index 0000000..c7bf157 --- /dev/null +++ b/templates/show_roles.html @@ -0,0 +1,47 @@ +{% extends "layout.html" %} +{% block body %} +
    +
    +

    Groupes

    +
    + {% if not roles %} +
    Il n'y a aucun role.
    + {% else %} +
    + + + + + + + + + + {% for role in roles %} + + + + + + + {% endfor %} + +
    NomMembresVotesActions
    {{ role.name }}TODOTODO{% if role.system %}system{% else %}Supprimer{% endif %}
    +

    + Les groupes « system » ne sont pas modifiables. +

    + {% endif %} +
    + +
    +
    +
    Ajouter un groupe +
    + + +
    +
    +
    +
    +{% endblock %} +