OU attribute to hide username on user add (#25669)
This commit is contained in:
parent
6bb479d44e
commit
9768e8fe3e
|
@ -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'),
|
||||
),
|
||||
]
|
|
@ -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')
|
||||
|
|
|
@ -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():
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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')
|
||||
|
|
Loading…
Reference in New Issue