Implement group descriptions, Close #64

This commit is contained in:
Götz 2019-05-15 16:00:39 +02:00
parent bca3355025
commit eb1ecfb352
5 changed files with 12 additions and 3 deletions

View File

@ -41,7 +41,7 @@ class UserGroupListForm(forms.Form):
class AddLDAPGroupForm(forms.Form):
name = forms.CharField(label='Gruppenname', max_length=400)
# TODO show only allowed user
description = forms.CharField(label='Beschreibung', max_length=1024, required=False)
members = forms.ModelMultipleChoiceField(label='Nutzer hinzufügen', widget=forms.CheckboxSelectMultiple,
queryset=LdapUser.objects.all(), )

View File

@ -121,6 +121,7 @@ class LdapGroup(Model):
object_classes = ['groupOfNames']
name = ldap_fields.CharField(db_column='cn', max_length=200, primary_key=True)
description = ldap_fields.CharField(db_column='description', max_length=1024)
members = ldap_fields.ListField(db_column='member')
@staticmethod

View File

@ -61,11 +61,12 @@ def group_add(request, realm_id):
# check whether it's valid:
if form.is_valid():
name = form.cleaned_data["name"]
description = form.cleaned_data["description"]
members = form.cleaned_data['members']
members = [member.dn for member in members]
LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}'
try:
LdapGroup.objects.create(name=name, members=members)
LdapGroup.objects.create(name=name, description=description, members=members)
except ALREADY_EXISTS:
return render(request, 'group/group_add.jinja2', {'form': form, 'realm': realm, 'users': users,
'extra_error': 'Der Gruppenname ist leider schon belegt. Bitte wähle einen anderen.'})
@ -93,6 +94,7 @@ def group_update(request, realm_id, group_dn):
form = AddLDAPGroupForm(request.POST)
if form.is_valid():
group.name = form.cleaned_data['name']
group.description = form.cleaned_data['description']
members = form.cleaned_data['members']
group.members = [member.dn for member in members]
group.save()
@ -105,7 +107,7 @@ def group_update(request, realm_id, group_dn):
members = LdapUser.objects.none()
if group.members:
members = LdapUser.get_users_by_dn(realm, group.members)
data = {'name': group.name, 'members': members}
data = {'name': group.name, 'description': group.description, 'members': members}
form = AddLDAPGroupForm(initial=data)
return render(request, 'group/group_detail.jinja2',

View File

@ -9,6 +9,7 @@
<form action="{{ url('realm-group-add', args=[realm.id]) }}" method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ mform.text_input(form.name) }}
{{ mform.textarea_input(form.description) }}
{{ form.members.label }}
<div class="form-group w-25 float-right">
<input type="text"

View File

@ -7,6 +7,10 @@
<h3>Gruppe {{ group.name }}</h3>
<ul class="list-group list-group-flush w-100 mb-3">
<li class="list-group-item">Ldap Domain: {{ group.dn }}</li>
{% if group.description %}
<li class="list-group-item">Beschreibung: {{ group.description }}</li>
{% endif %}
</ul>
<h3>Mitglieder</h3>
{{ mutils.get_user_table(realm, users) }}
@ -21,6 +25,7 @@
<form method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ mform.text_input(form.name) }}
{{ mform.textarea_input(form.description) }}
{{ form.members.label }}
{{ mform.user_select_table_input(users, field=form.members) }}
<div class="d-flex mt-4">