manager: allow role slug edition (#46656)
This commit is contained in:
parent
233b289139
commit
69ec66052f
|
@ -615,7 +615,7 @@ class RoleEditForm(SlugMixin, HideOUFieldMixin, LimitQuerysetFormMixin, CssClass
|
|||
|
||||
class Meta:
|
||||
model = get_role_model()
|
||||
fields = ('name', 'ou', 'description')
|
||||
fields = ('name', 'slug', 'ou', 'description')
|
||||
|
||||
|
||||
class OUEditForm(SlugMixin, CssClass, forms.ModelForm):
|
||||
|
|
|
@ -30,6 +30,7 @@ from django.contrib.auth import get_user_model
|
|||
|
||||
from django_rbac.utils import get_role_model, get_permission_model, get_ou_model
|
||||
|
||||
from authentic2.forms.profile import modelform_factory
|
||||
from authentic2.utils import redirect
|
||||
from authentic2 import hooks, data_transfer
|
||||
|
||||
|
@ -86,9 +87,12 @@ class RoleAddView(views.BaseAddView):
|
|||
model = get_role_model()
|
||||
title = _('Add role')
|
||||
success_view_name = 'a2-manager-role-members'
|
||||
exclude_fields = ('slug',)
|
||||
|
||||
def get_form_class(self):
|
||||
return forms.get_role_form_class()
|
||||
form = forms.get_role_form_class()
|
||||
fields = [x for x in form.base_fields.keys() if x not in self.exclude_fields]
|
||||
return modelform_factory(self.model, form=form, fields=fields)
|
||||
|
||||
def form_valid(self, form):
|
||||
response = super(RoleAddView, self).form_valid(form)
|
||||
|
|
|
@ -115,7 +115,7 @@ class RoleTable(tables.Table):
|
|||
class Meta:
|
||||
model = get_role_model()
|
||||
attrs = {'class': 'main', 'id': 'role-table'}
|
||||
fields = ('name', 'ou', 'member_count')
|
||||
fields = ('name', 'slug', 'ou', 'member_count')
|
||||
|
||||
|
||||
class PermissionTable(tables.Table):
|
||||
|
|
|
@ -86,6 +86,7 @@ def test_manager_create_role(superuser_or_admin, app):
|
|||
assert 'name' in form.fields
|
||||
assert 'description' in form.fields
|
||||
assert 'ou' not in form.fields
|
||||
assert 'slug' not in form.fields
|
||||
form.set('name', 'New role')
|
||||
response = form.submit().follow()
|
||||
assert non_admin_roles.count() == 1
|
||||
|
@ -117,6 +118,17 @@ def test_manager_create_role(superuser_or_admin, app):
|
|||
assert 'New OU' in options
|
||||
|
||||
|
||||
def test_manager_edit_role_slug(superuser_or_admin, app, simple_role):
|
||||
assert Role.objects.get(name='simple role').slug == 'simple-role'
|
||||
resp = login(app, superuser_or_admin,
|
||||
reverse('a2-manager-role-edit', kwargs={'pk': simple_role.pk}))
|
||||
form = resp.form
|
||||
assert 'slug' in form.fields
|
||||
form.set('slug', 'new-simple-role-slug')
|
||||
form.submit().follow()
|
||||
assert Role.objects.get(name='simple role').slug == 'new-simple-role-slug'
|
||||
|
||||
|
||||
def test_manager_user_password_reset(app, superuser, simple_user):
|
||||
resp = login(app, superuser,
|
||||
reverse('a2-manager-user-detail', kwargs={'pk': simple_user.pk}))
|
||||
|
@ -368,6 +380,7 @@ def test_manager_one_ou(app, superuser, admin, simple_role, settings):
|
|||
|
||||
# test role listing
|
||||
response = app.get('/manage/roles/')
|
||||
assert [x.text for x in response.pyquery('td.slug')] == ['simple-role']
|
||||
assert 'search-ou' not in response.form.fields
|
||||
q = response.pyquery.remove_namespaces()
|
||||
assert len(q('table tbody tr')) == 1
|
||||
|
|
Loading…
Reference in New Issue