manager: replace "verified email" column by a checkmark next to email (#45335)

This commit is contained in:
Frédéric Péters 2020-07-25 16:36:34 +02:00
parent 89323afd6c
commit 757b823236
3 changed files with 33 additions and 2 deletions

View File

@ -48,6 +48,12 @@ table#user-table td {
word-break: break-word;
}
table td span.verified::after {
content: "✔";
color: #0a0;
font-weight: bold;
}
table.main th.name, table.main td.name, #user-table .link, #user-table .username, #user-table
.email, #user-table .first_name, #user-table .last_name, #user-table .ou {
text-align: left;

View File

@ -15,6 +15,7 @@
# along with this program. If not, see <http://www.gnu.org/licenses/>.
from django.contrib.auth import get_user_model
from django.utils import html
from django.utils.translation import ugettext_lazy as _
from django.utils.translation import ugettext_noop
@ -43,6 +44,18 @@ class PermissionLinkColumn(tables.LinkColumn):
return super(PermissionLinkColumn, self).render(value, record, bound_column)
class VerifiableEmailColumn(tables.Column):
def render(self, **kwargs):
user = kwargs['record']
verified = user.email_verified
value = user.email
if value and verified:
return html.format_html(
'<span class="verified">{value}</span>',
value=value)
return value
class UserTable(tables.Table):
link = PermissionLinkColumn(
viewname='a2-manager-user-detail',
@ -52,14 +65,14 @@ class UserTable(tables.Table):
order_by=('first_name', 'last_name', 'email', 'username'),
kwargs={'pk': A('pk')})
username = tables.Column()
email = tables.Column()
email = VerifiableEmailColumn()
ou = tables.Column()
class Meta:
model = User
attrs = {'class': 'main', 'id': 'user-table'}
fields = ('username', 'email', 'first_name',
'last_name', 'is_active', 'email_verified', 'ou')
'last_name', 'is_active', 'ou')
sequence = ('link', '...')
empty_text = _('None')
order_by = ('first_name', 'last_name', 'email', 'username')

View File

@ -722,3 +722,15 @@ def test_manager_edit_user_email_verified(app, simple_user, superuser_or_admin):
user = User.objects.get(id=simple_user.id)
assert not user.email_verified
def test_manager_email_verified_column_user(app, simple_user, superuser_or_admin):
login(app, superuser_or_admin, '/manage/')
resp = app.get('/manage/users/')
assert not resp.html.find('span', {'class': 'verified'})
simple_user.email_verified = True
simple_user.save()
resp = app.get('/manage/users/')
assert resp.html.find('span', {'class': 'verified'}).text == simple_user.email