manager: allow ou slug edition (#46655)

This commit is contained in:
Nicolas Roche 2020-09-22 12:35:31 +02:00
parent 9a07dc2a18
commit 03f2b80a98
4 changed files with 19 additions and 2 deletions

View File

@ -626,7 +626,7 @@ class OUEditForm(SlugMixin, CssClass, forms.ModelForm):
class Meta:
model = get_ou_model()
fields = (
'name', 'default', 'username_is_unique', 'email_is_unique', 'validate_emails',
'name', 'slug', 'default', 'username_is_unique', 'email_is_unique', 'validate_emails',
'show_username', 'user_can_reset_password', 'user_add_password_policy',
'clean_unused_accounts_alert', 'clean_unused_accounts_deletion'
)

View File

@ -47,6 +47,11 @@ class OrganizationalUnitAddView(views.BaseAddView):
permissions = ['a2_rbac.add_organizationalunit']
form_class = forms.OUEditForm
title = _('Add organizational unit')
exclude_fields = ('slug',)
def get_fields(self):
return [x for x in self.form_class.base_fields.keys()
if x not in self.exclude_fields]
def get_success_url(self):
return '..'

View File

@ -137,7 +137,7 @@ class OUTable(tables.Table):
class Meta:
model = get_ou_model()
attrs = {'class': 'main', 'id': 'ou-table'}
fields = ('name', 'default')
fields = ('name', 'slug', 'default')
empty_text = _('None')

View File

@ -60,6 +60,8 @@ def test_manager_login(superuser_or_admin, app):
def test_manager_create_ou(superuser_or_admin, app):
ou_add = login(app, superuser_or_admin, path=reverse('a2-manager-ou-add'))
form = ou_add.form
assert 'name' in form.fields
assert 'slug' not in form.fields
form.set('name', 'New OU')
response = form.submit().follow()
assert 'New OU' in response
@ -728,6 +730,7 @@ def test_manager_ou(app, superuser_or_admin, ou1):
manager_home_page = login(app, superuser_or_admin, reverse('a2-manager-homepage'))
ou_homepage = manager_home_page.click(href='organizational-units')
assert set([e.text for e in ou_homepage.pyquery('td.name')]) == set(['OU1', 'Default organizational unit'])
assert [x.text for x in ou_homepage.pyquery('td.slug')] == ['default', 'ou1']
# add a new ou
add_ou_page = ou_homepage.click('Add')
@ -766,6 +769,15 @@ def test_manager_ou(app, superuser_or_admin, ou1):
assert len(ou_homepage.pyquery('tr[data-pk="%s"] td.default span.true' % ou2.pk)) == 0
assert len(ou_homepage.pyquery('tr[data-pk="%s"] td.default span.true' % old_default.pk)) == 1
# edit ou slug
assert OU.objects.get(name='ou2').slug == 'ou2'
ou2_detail_page = app.get(reverse('a2-manager-ou-edit', kwargs={'pk': ou2.pk}))
form = ou2_detail_page.form
assert 'slug' in form.fields
form.set('slug', 'new-ou2-slug')
form.submit().follow()
assert OU.objects.get(name='ou2').slug == 'new-ou2-slug'
def test_return_on_logout(superuser, app):
'''Verify we will return to /manage/ after logout/login cycle'''