From b3608be9930f9b8a445c6ffed0a949331f2a78f6 Mon Sep 17 00:00:00 2001
From: Fredrik Jonsson <frjo@xdeb.org>
Date: Fri, 21 Jun 2019 09:54:00 +0200
Subject: [PATCH] Add roles to the user admin index page.

---
 opentech/apply/users/models.py                |  4 ++
 .../templates/wagtailusers/users/list.html    | 43 +++++++++++++++++++
 2 files changed, 47 insertions(+)
 create mode 100644 opentech/apply/users/templates/wagtailusers/users/list.html

diff --git a/opentech/apply/users/models.py b/opentech/apply/users/models.py
index 3752a5761..38c52a723 100644
--- a/opentech/apply/users/models.py
+++ b/opentech/apply/users/models.py
@@ -95,6 +95,10 @@ class User(AbstractUser):
     def get_short_name(self):
         return self.email
 
+    @cached_property
+    def roles(self):
+        return list(self.groups.values_list('name', flat=True))
+
     @cached_property
     def is_apply_staff(self):
         return self.groups.filter(name=STAFF_GROUP_NAME).exists() or self.is_superuser
diff --git a/opentech/apply/users/templates/wagtailusers/users/list.html b/opentech/apply/users/templates/wagtailusers/users/list.html
new file mode 100644
index 000000000..87ec4ac59
--- /dev/null
+++ b/opentech/apply/users/templates/wagtailusers/users/list.html
@@ -0,0 +1,43 @@
+{% load i18n wagtailusers_tags wagtailadmin_tags %}
+<table class="listing">
+    <thead>
+        <tr>
+            <th class="name">
+                {% trans "Name" %}
+                {% if ordering == "name" %}
+                    <a href="{% url 'wagtailusers_users:index' %}" class="icon icon-arrow-down-after teal"></a>
+                {% else %}
+                    <a href="{% url 'wagtailusers_users:index' %}?ordering=name" class="icon icon-arrow-down-after"></a>
+                {% endif %}
+            </th>
+            <th class="username">
+                {% trans "Username" %}
+                {% if ordering == "username" %}
+                    <a href="{% url 'wagtailusers_users:index' %}" class="icon icon-arrow-down-after teal"></a>
+                {% else %}
+                    <a href="{% url 'wagtailusers_users:index' %}?ordering=username" class="icon icon-arrow-down-after"></a>
+                {% endif %}
+            </th>
+            <th class="level">{% trans "Role" %}</th>
+            <th class="status">{% trans "Status" %}</th>
+        </tr>
+    </thead>
+    <tbody>
+        {% for user in users %}
+            <tr>
+                <td class="title" valign="top">
+                    <h2>
+                        <span class="avatar small"><img src="{% avatar_url user size=25 %}" /></span>
+                        <a href="{% url 'wagtailusers_users:edit' user.pk %}">{{ user.get_full_name|default:user.get_username }}</a>
+                    </h2>
+                    <ul class="actions">
+                        {% user_listing_buttons user %}
+                    </ul>
+                </td>
+                <td class="username" valign="top">{{ user.get_username }}</td>
+                <td class="level" valign="top">{{ user.roles|join:', ' }}{% if user.is_superuser %} ({% trans "Admin" %}){% endif %}</td>
+                <td class="status" valign="top"><div class="status-tag {% if user.is_active %}primary{% endif %}">{% if user.is_active %}{% trans "Active" %}{% else %}{% trans "Inactive" %}{% endif %}</div></td>
+            </tr>
+        {% endfor %}
+    </tbody>
+</table>
-- 
GitLab