OU attribute to hide username on user add (#25669)

This commit is contained in:
Emmanuel Cazenave 2019-03-06 11:24:59 +01:00
parent 6bb479d44e
commit 9768e8fe3e
5 changed files with 58 additions and 3 deletions

View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.18 on 2019-03-06 10:21
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('a2_rbac', '0017_organizationalunit_user_can_reset_password'),
]
operations = [
migrations.AddField(
model_name='organizationalunit',
name='show_username',
field=models.BooleanField(default=True, verbose_name='Show username'),
),
]

View File

@ -59,6 +59,11 @@ class OrganizationalUnit(OrganizationalUnitAbstractBase):
default=False,
verbose_name=_('Validate emails'))
show_username = models.BooleanField(
blank=True,
default=True,
verbose_name=_('Show username'))
admin_perms = GenericRelation(rbac_utils.get_permission_model_name(),
content_type_field='target_ct',
object_id_field='target_id')

View File

@ -658,7 +658,10 @@ class OUEditForm(SlugMixin, CssClass, forms.ModelForm):
class Meta:
model = get_ou_model()
fields = ('name', 'default', 'username_is_unique', 'email_is_unique', 'validate_emails')
fields = (
'name', 'default', 'username_is_unique', 'email_is_unique', 'validate_emails',
'show_username'
)
def get_role_form_class():

View File

@ -114,13 +114,18 @@ class UserAddView(BaseAddView):
def get_form_kwargs(self):
kwargs = super(UserAddView, self).get_form_kwargs()
qs = self.request.user.ous_with_perm('custom_user.add_user')
self.ou = qs.get(pk=self.kwargs['ou_pk'])
kwargs['ou'] = self.ou
return kwargs
def get_form_class(self):
qs = self.request.user.ous_with_perm('custom_user.add_user')
self.ou = qs.get(pk=self.kwargs['ou_pk'])
return super(UserAddView, self).get_form_class()
def get_fields(self):
fields = list(self.fields)
if not self.ou.show_username:
fields.remove('username')
i = fields.index('generate_password')
if self.request.user.is_superuser and \
'is_superuser' not in self.fields:

View File

@ -851,3 +851,25 @@ def test_user_add_settings(settings, admin, app, db):
assert user_add.form.get(option).value == {False:None, True:'on'}. \
get(get_ou_model().USER_ADD_PASSWD_POLICY_VALUES[policy][i])
app.get('/logout/').form.submit()
def test_ou_hide_username(admin, app, db):
OU = get_ou_model()
some_ou = OU.objects.create(name=u'Some Ou', show_username=False)
login(app, admin, '/manage/')
url = u'/manage/users/%s/add/' % some_ou.pk
response = app.get(url)
q = response.pyquery.remove_namespaces()
assert len(q('p[id="id_username_p"]')) == 0
form = response.form
form.set('first_name', 'John')
form.set('last_name', 'Doe')
form.set('email', 'john.doe@gmail.com')
form.set('password1', 'ABcd1234')
form.set('password2', 'ABcd1234')
form.submit()
User = get_user_model()
assert User.objects.get(email='john.doe@gmail.com')