manager: remove username field from view/edit pages if configured so (#45674)

This commit is contained in:
Frédéric Péters 2020-08-02 13:40:46 +02:00 committed by Benjamin Dauvergne
parent 079102d851
commit 7d630f53be
2 changed files with 40 additions and 0 deletions

View File

@ -309,6 +309,8 @@ class UserDetailView(OtherActionsMixin, BaseDetailView):
def get_fields(self):
fields = list(self.fields)
if not self.object.username and self.object.ou and not self.object.ou.show_username:
fields.remove('username')
for attribute in Attribute.objects.all():
fields.append(attribute.name)
if self.request.user.is_superuser and \
@ -365,6 +367,8 @@ class UserEditView(OtherActionsMixin, ActionMixin, BaseEditView):
def get_fields(self):
fields = list(self.fields)
if not self.object.username and self.object.ou and not self.object.ou.show_username:
fields.remove('username')
if not self.object.ou or not self.object.ou.validate_emails:
fields.append('email')
for attribute in Attribute.objects.all():

View File

@ -746,3 +746,39 @@ def test_manager_user_link_column_is_active(app, simple_user, superuser_or_admin
simple_user.save()
resp = app.get('/manage/users/')
assert resp.html.find('span', {'class': 'disabled'}).text == 'Jôhn Dôe (disabled)'
def test_manager_user_username_field(app, superuser, simple_user):
login(app, superuser, '/manage/')
resp = app.get(reverse('a2-manager-user-detail', kwargs={'pk': simple_user.id}))
assert resp.html.find('input', {'name': 'username'})
resp = app.get(reverse('a2-manager-user-edit', kwargs={'pk': simple_user.id}))
assert resp.html.find('input', {'name': 'username'})
# remove username from user
simple_user.username = ''
simple_user.save()
resp = app.get(reverse('a2-manager-user-detail', kwargs={'pk': simple_user.id}))
assert resp.html.find('input', {'name': 'username'})
resp = app.get(reverse('a2-manager-user-edit', kwargs={'pk': simple_user.id}))
assert resp.html.find('input', {'name': 'username'})
# disable usernames on organizational unit
simple_user.ou.show_username = False
simple_user.ou.save()
resp = app.get(reverse('a2-manager-user-detail', kwargs={'pk': simple_user.id}))
assert not resp.html.find('input', {'name': 'username'})
resp = app.get(reverse('a2-manager-user-edit', kwargs={'pk': simple_user.id}))
assert not resp.html.find('input', {'name': 'username'})
# but it's still displayed if it was set
simple_user.username = 'user'
simple_user.save()
resp = app.get(reverse('a2-manager-user-detail', kwargs={'pk': simple_user.id}))
assert resp.html.find('input', {'name': 'username'})
resp = app.get(reverse('a2-manager-user-edit', kwargs={'pk': simple_user.id}))
assert resp.html.find('input', {'name': 'username'})