manager: replace "is_active" column by an explicit mention (#45337)

This commit is contained in:
Valentin Deniaud 2020-07-30 18:12:54 +02:00
parent 0aa8456917
commit fa80828407
2 changed files with 27 additions and 3 deletions

View File

@ -36,7 +36,7 @@ class PermissionLinkColumn(tables.LinkColumn):
self.permission = kwargs.pop('permission', None)
super(PermissionLinkColumn, self).__init__(viewname, **kwargs)
def render(self, value, record, bound_column):
def render(self, value, record, bound_column, **kwargs):
if self.permission:
request = StoreRequestMiddleware.get_request()
if request and not request.user.has_perm(self.permission, record):
@ -56,8 +56,20 @@ class VerifiableEmailColumn(tables.Column):
return value
class UserLinkColumn(PermissionLinkColumn):
def render(self, **kwargs):
user = kwargs['record']
value = super().render(**kwargs)
if not user.is_active:
value = html.format_html(
'<span class="disabled">{value} ({disabled})</span>',
value=value, disabled=_('disabled'))
return value
class UserTable(tables.Table):
link = PermissionLinkColumn(
link = UserLinkColumn(
viewname='a2-manager-user-detail',
permission='custom_user.view_user',
verbose_name=_('User'),
@ -72,7 +84,7 @@ class UserTable(tables.Table):
model = User
attrs = {'class': 'main', 'id': 'user-table'}
fields = ('username', 'email', 'first_name',
'last_name', 'is_active', 'ou')
'last_name', 'ou')
sequence = ('link', '...')
empty_text = _('None')
order_by = ('first_name', 'last_name', 'email', 'username')

View File

@ -734,3 +734,15 @@ def test_manager_email_verified_column_user(app, simple_user, superuser_or_admin
simple_user.save()
resp = app.get('/manage/users/')
assert resp.html.find('span', {'class': 'verified'}).text == simple_user.email
def test_manager_user_link_column_is_active(app, simple_user, superuser_or_admin):
login(app, superuser_or_admin, '/manage/')
resp = app.get('/manage/users/')
assert not resp.html.find('span', {'class': 'disabled'})
simple_user.is_active = False
simple_user.save()
resp = app.get('/manage/users/')
assert resp.html.find('span', {'class': 'disabled'}).text == 'Jôhn Dôe (disabled)'