From b0f6c1977f5824c5360fcd6b2c9a81dcd1fbb857 Mon Sep 17 00:00:00 2001 From: Valentin Deniaud Date: Tue, 20 Oct 2020 14:27:14 +0200 Subject: [PATCH] manager: select default ou in users table (#45338) --- src/authentic2/manager/forms.py | 2 ++ tests/test_manager.py | 7 +++---- tests/test_user_manager.py | 5 +++++ 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/authentic2/manager/forms.py b/src/authentic2/manager/forms.py index 5dbdcd8e..6937c46c 100644 --- a/src/authentic2/manager/forms.py +++ b/src/authentic2/manager/forms.py @@ -576,6 +576,8 @@ class UserSearchForm(OUSearchForm, CssClass, PrefixFormMixin, FormWithRequest): def __init__(self, *args, **kwargs): self.minimum_chars = kwargs.pop('minimum_chars', 0) + initial = kwargs.setdefault('initial', {}) + initial['ou'] = str(get_default_ou().pk) super(UserSearchForm, self).__init__(*args, **kwargs) def not_enough_chars(self): diff --git a/tests/test_manager.py b/tests/test_manager.py index 68c49ecc..329e2fbb 100644 --- a/tests/test_manager.py +++ b/tests/test_manager.py @@ -410,14 +410,13 @@ def test_manager_many_ou(app, superuser, admin, simple_role, role_ou1, admin_ou1 options = field.options assert len(options) == 4 for key, checked, label in options: - assert not checked or key == 'all' + assert not checked or key == str(get_default_ou().pk) assert 'all' in [o[0] for o in options] assert 'none' in [o[0] for o in options] # verify table shown q = response.pyquery.remove_namespaces() - assert len(q('table tbody tr')) == 3 - assert set([e.text for e in q('table tbody td.username')]) == {'admin', 'superuser', - 'admin.ou1'} + assert len(q('table tbody tr')) == len(User.objects.filter(ou=get_default_ou())) + assert set([e.text for e in q('table tbody td.username')]) == {'admin'} # test user's role page response = app.get('/manage/users/%d/roles/' % admin.pk) diff --git a/tests/test_user_manager.py b/tests/test_user_manager.py index 34fbf8b9..a182fd9f 100644 --- a/tests/test_user_manager.py +++ b/tests/test_user_manager.py @@ -297,6 +297,7 @@ def test_export_csv(settings, app, superuser, django_assert_num_queries): # queries should be batched to keep prefetching working without # overspending memory for the queryset cache, 4 queries by batches num_queries = int(4 + 4 * (user_count / DEFAULT_BATCH_SIZE + bool(user_count % DEFAULT_BATCH_SIZE))) + num_queries += 1 # get_default_ou form call with django_assert_num_queries(num_queries): response = response.click('CSV') table = list(csv.reader(response.text.splitlines())) @@ -335,6 +336,10 @@ def test_user_table(app, admin, user_ou1, ou1): response = login(app, admin, '/manage/users/') assert response.pyquery('td.username') + assert response.pyquery('select#id_search-ou option:selected').val() == str(get_default_ou().pk) + assert admin.username in response.text + assert not user_ou1.username in response.text + # hide all usernames, from specific and general view OU.objects.update(show_username=False) has_show_username.cache.clear() -- 2.20.1