Print groups in user list
authorGuillaume Subiron <maethor@subiron.org>
Wed, 30 May 2012 16:17:14 +0000 (18:17 +0200)
committerJulien Rabier <taziden@flexiden.org>
Wed, 30 May 2012 16:18:44 +0000 (18:18 +0200)
main.py
templates/admin_users.html

diff --git a/main.py b/main.py
index d9488c9..735fa6d 100755 (executable)
--- a/main.py
+++ b/main.py
@@ -158,8 +158,19 @@ def user_password(userid):
 def admin_users():
     if not session.get('user').get('is_admin'):
         abort(401)
-    users = query_db('select *, roles.name as rolename from (select *, name as username from users join user_role on id=id_user order by id desc) join roles on id_role=roles.id')
-    # :TODO:maethor:20120530: Find a way to reduce the dict
+    tuples = query_db('select *, roles.name as rolename from (select *, id as userid, name as username from users join user_role on id=id_user order by id desc) join roles on id_role=roles.id')
+    users = dict()
+    for t in tuples:
+        if t['userid'] in users:
+            users[t['userid']]['roles'].append(t["rolename"])
+        else:
+            users[t['userid']] = dict()
+            users[t['userid']]['userid'] = t['userid']
+            users[t['userid']]['email'] = t['email']
+            users[t['userid']]['username'] = t['username']
+            users[t['userid']]['is_admin'] = t['is_admin']
+            users[t['userid']]['roles'] = [t['rolename']]
+
     return render_template('admin_users.html', users=users)
 
 @app.route('/admin/users/add', methods=['GET', 'POST'])
index 8ec9eb3..c1934a7 100644 (file)
     </tr>
     </thead>
     <tbody>
-    {% for user in users %}
+    {% for user in users.values() %}
     <tr>
       <td>{{ user.email }}</td>
       <td>{{ user.username }}</td>
-      <td>{{ user.rolename }}</td>
+      <td>{% for role in user.roles %}<span class="label">{{ role }}</span> {% endfor %}</td>
       <td>{% if user.is_admin %}<span class="label label-success">Oui</span>{% else %}<span class="label">Non</span>{% endif %}</td>
       <td>
         <a href="" class="btn btn-mini">Éditer</a>