Implement group creation

This commit is contained in:
Götz 2019-03-28 04:34:48 +01:00
parent 2147439e6c
commit 4b3aeee7c7
5 changed files with 46 additions and 5 deletions

View File

@ -1,5 +1,6 @@
from django import forms
from rdn_helper.models import LdapUserRDN
from rdn_helper.models import LdapUserRDN, LdapGroupRDN
from .models import LdapUser
class AddLDAPUserForm(forms.Form):
@ -8,3 +9,9 @@ class AddLDAPUserForm(forms.Form):
first_name = forms.CharField(label='first_name', max_length=400)
last_name = forms.CharField(label='last_name', max_length=400)
password = forms.CharField(widget=forms.PasswordInput)
class AddLDAPGroupForm(forms.Form):
rdn = forms.ModelChoiceField(queryset=LdapGroupRDN.objects.all())
name = forms.CharField(label='name', max_length=400)
members = forms.ModelMultipleChoiceField(widget=forms.CheckboxSelectMultiple, queryset=LdapUser.objects.all())

View File

@ -5,4 +5,5 @@ urlpatterns = [
path('user/list/', views.userlist, name='user-list'),
path('user/get/<str:dn>/', views.userlist, name='user'),
path('user/add/', views.adduser, name='user-add'),
path('group/add/', views.addgroup, name='group-add'),
]

View File

@ -3,7 +3,7 @@ from django.http import HttpResponseRedirect
from django.shortcuts import render, redirect
from .models import LdapGroup, LdapUser
from django.contrib.auth.models import User
from .forms import AddLDAPUserForm
from .forms import AddLDAPUserForm, AddLDAPGroupForm
# @login_required
@ -18,7 +18,8 @@ from .forms import AddLDAPUserForm
def userlist(request):
user = LdapUser.objects.all()
context = {'users': user, }
groups = LdapGroup.objects.all()
context = {'users': user, 'groups': groups}
# ldap_user = LdapUser.objects.get(username='fred')
# ldap_user = LdapUser.objects.create(rdn='ou=people,ou=fs_wiai,ou=fachschaften', username='b3',
# password='lappen1', first_name='ferdinand1',
@ -58,3 +59,24 @@ def adduser(request):
form = AddLDAPUserForm()
return render(request, 'user_add.jinja', {'form': form})
def addgroup(request):
# if this is a POST request we need to process the form data
if request.method == 'POST':
# create a form instance and populate it with data from the request:
form = AddLDAPGroupForm(request.POST)
# check whether it's valid:
if form.is_valid():
rdn = form.cleaned_data['rdn']
name = form.cleaned_data['name']
members = form.cleaned_data['members']
members = [member.dn for member in members]
LdapGroup.objects.create(rdn=rdn, name=name, members=members)
return redirect('user-list')
# if a GET (or any other method) we'll create a blank form
else:
form = AddLDAPGroupForm()
return render(request, 'group_add.jinja', {'form': form})

View File

@ -0,0 +1,5 @@
<form action="{{ url('group-add') }}" method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ form.as_p() }}
<input type="submit" value="Submit">
</form>

View File

@ -1,7 +1,13 @@
{% extends 'base.jinja' %}
{% block content %}
<a href="{{ url('user-add') }}">Nutzer anlegen</a> | <a href="{{ url('group-add') }}">Gruppe anlegen</a>
<h2>Nutzer</h2>
{% for user in users %}
<p><a href="{{ url('user', args=[user.dn]) }}">{{ user.dn }}</a> - {{ user.username }}</p>
<p>{{ user.username }} - <a href="{{ url('user', args=[user.dn]) }}">{{ user.dn }}</a></p>
{% endfor %}
<h2>Gruppen</h2>
{% for group in groups %}
<p>{{ group.name }} - <a href="{{ url('user', args=[group.dn]) }}">{{ group.dn }}</a></p>
{% endfor %}
{% endblock %}