0001-OU-attribute-to-hide-username-on-user-add-25669.patch
src/authentic2/a2_rbac/migrations/0018_organizationalunit_show_username.py | ||
---|---|---|
1 |
# -*- coding: utf-8 -*- |
|
2 |
# Generated by Django 1.11.18 on 2019-03-06 10:21 |
|
3 |
from __future__ import unicode_literals |
|
4 | ||
5 |
from django.db import migrations, models |
|
6 | ||
7 | ||
8 |
class Migration(migrations.Migration): |
|
9 | ||
10 |
dependencies = [ |
|
11 |
('a2_rbac', '0017_organizationalunit_user_can_reset_password'), |
|
12 |
] |
|
13 | ||
14 |
operations = [ |
|
15 |
migrations.AddField( |
|
16 |
model_name='organizationalunit', |
|
17 |
name='show_username', |
|
18 |
field=models.BooleanField(default=True, verbose_name='Show username'), |
|
19 |
), |
|
20 |
] |
src/authentic2/a2_rbac/models.py | ||
---|---|---|
40 | 40 |
default=False, |
41 | 41 |
verbose_name=_('Validate emails')) |
42 | 42 | |
43 |
show_username = models.BooleanField( |
|
44 |
blank=True, |
|
45 |
default=True, |
|
46 |
verbose_name=_('Show username')) |
|
47 | ||
43 | 48 |
admin_perms = GenericRelation(rbac_utils.get_permission_model_name(), |
44 | 49 |
content_type_field='target_ct', |
45 | 50 |
object_id_field='target_id') |
src/authentic2/manager/forms.py | ||
---|---|---|
658 | 658 | |
659 | 659 |
class Meta: |
660 | 660 |
model = get_ou_model() |
661 |
fields = ('name', 'default', 'username_is_unique', 'email_is_unique', 'validate_emails') |
|
661 |
fields = ( |
|
662 |
'name', 'default', 'username_is_unique', 'email_is_unique', 'validate_emails', |
|
663 |
'show_username' |
|
664 |
) |
|
662 | 665 | |
663 | 666 | |
664 | 667 |
def get_role_form_class(): |
src/authentic2/manager/user_views.py | ||
---|---|---|
114 | 114 | |
115 | 115 |
def get_form_kwargs(self): |
116 | 116 |
kwargs = super(UserAddView, self).get_form_kwargs() |
117 |
qs = self.request.user.ous_with_perm('custom_user.add_user') |
|
118 |
self.ou = qs.get(pk=self.kwargs['ou_pk']) |
|
119 | 117 |
kwargs['ou'] = self.ou |
120 | 118 |
return kwargs |
121 | 119 | |
120 |
def get_form_class(self): |
|
121 |
qs = self.request.user.ous_with_perm('custom_user.add_user') |
|
122 |
self.ou = qs.get(pk=self.kwargs['ou_pk']) |
|
123 |
return super(UserAddView, self).get_form_class() |
|
124 | ||
122 | 125 |
def get_fields(self): |
123 | 126 |
fields = list(self.fields) |
127 |
if not self.ou.show_username: |
|
128 |
fields.remove('username') |
|
124 | 129 |
i = fields.index('generate_password') |
125 | 130 |
if self.request.user.is_superuser and \ |
126 | 131 |
'is_superuser' not in self.fields: |
tests/test_manager.py | ||
---|---|---|
837 | 837 |
response = app.get(url, params={'field_id': field_id, 'term': 'Admin édou'}) |
838 | 838 |
assert len(response.json['results']) == 1 |
839 | 839 |
assert response.json['results'][0]['text'] == u'La Bédoule - Administrateur' |
840 | ||
841 | ||
842 |
def test_ou_hide_username(admin, app, db): |
|
843 |
OU = get_ou_model() |
|
844 |
some_ou = OU.objects.create(name=u'Some Ou', show_username=False) |
|
845 | ||
846 |
login(app, admin, '/manage/') |
|
847 |
url = u'/manage/users/%s/add/' % some_ou.pk |
|
848 |
response = app.get(url) |
|
849 |
q = response.pyquery.remove_namespaces() |
|
850 |
assert len(q('p[id="id_username_p"]')) == 0 |
|
851 | ||
852 |
form = response.form |
|
853 |
form.set('first_name', 'John') |
|
854 |
form.set('last_name', 'Doe') |
|
855 |
form.set('email', 'john.doe@gmail.com') |
|
856 |
form.set('password1', 'ABcd1234') |
|
857 |
form.set('password2', 'ABcd1234') |
|
858 |
form.submit() |
|
859 | ||
860 |
User = get_user_model() |
|
861 |
assert User.objects.get(email='john.doe@gmail.com') |
|
840 |
- |