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): class AddLDAPGroupForm(forms.Form):
name = forms.CharField(label='Gruppenname', max_length=400) 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, members = forms.ModelMultipleChoiceField(label='Nutzer hinzufügen', widget=forms.CheckboxSelectMultiple,
queryset=LdapUser.objects.all(), ) queryset=LdapUser.objects.all(), )

View File

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

View File

@ -61,11 +61,12 @@ def group_add(request, realm_id):
# check whether it's valid: # check whether it's valid:
if form.is_valid(): if form.is_valid():
name = form.cleaned_data["name"] name = form.cleaned_data["name"]
description = form.cleaned_data["description"]
members = form.cleaned_data['members'] members = form.cleaned_data['members']
members = [member.dn for member in members] members = [member.dn for member in members]
LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}' LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}'
try: try:
LdapGroup.objects.create(name=name, members=members) LdapGroup.objects.create(name=name, description=description, members=members)
except ALREADY_EXISTS: except ALREADY_EXISTS:
return render(request, 'group/group_add.jinja2', {'form': form, 'realm': realm, 'users': users, 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.'}) '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) form = AddLDAPGroupForm(request.POST)
if form.is_valid(): if form.is_valid():
group.name = form.cleaned_data['name'] group.name = form.cleaned_data['name']
group.description = form.cleaned_data['description']
members = form.cleaned_data['members'] members = form.cleaned_data['members']
group.members = [member.dn for member in members] group.members = [member.dn for member in members]
group.save() group.save()
@ -105,7 +107,7 @@ def group_update(request, realm_id, group_dn):
members = LdapUser.objects.none() members = LdapUser.objects.none()
if group.members: if group.members:
members = LdapUser.get_users_by_dn(realm, 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) form = AddLDAPGroupForm(initial=data)
return render(request, 'group/group_detail.jinja2', return render(request, 'group/group_detail.jinja2',

View File

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

View File

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