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 django import forms
from rdn_helper.models import LdapUserRDN from rdn_helper.models import LdapUserRDN, LdapGroupRDN
from .models import LdapUser
class AddLDAPUserForm(forms.Form): class AddLDAPUserForm(forms.Form):
@ -8,3 +9,9 @@ class AddLDAPUserForm(forms.Form):
first_name = forms.CharField(label='first_name', max_length=400) first_name = forms.CharField(label='first_name', max_length=400)
last_name = forms.CharField(label='last_name', max_length=400) last_name = forms.CharField(label='last_name', max_length=400)
password = forms.CharField(widget=forms.PasswordInput) 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/list/', views.userlist, name='user-list'),
path('user/get/<str:dn>/', views.userlist, name='user'), path('user/get/<str:dn>/', views.userlist, name='user'),
path('user/add/', views.adduser, name='user-add'), 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 django.shortcuts import render, redirect
from .models import LdapGroup, LdapUser from .models import LdapGroup, LdapUser
from django.contrib.auth.models import User from django.contrib.auth.models import User
from .forms import AddLDAPUserForm from .forms import AddLDAPUserForm, AddLDAPGroupForm
# @login_required # @login_required
@ -18,7 +18,8 @@ from .forms import AddLDAPUserForm
def userlist(request): def userlist(request):
user = LdapUser.objects.all() 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.get(username='fred')
# ldap_user = LdapUser.objects.create(rdn='ou=people,ou=fs_wiai,ou=fachschaften', username='b3', # ldap_user = LdapUser.objects.create(rdn='ou=people,ou=fs_wiai,ou=fachschaften', username='b3',
# password='lappen1', first_name='ferdinand1', # password='lappen1', first_name='ferdinand1',
@ -58,3 +59,24 @@ def adduser(request):
form = AddLDAPUserForm() form = AddLDAPUserForm()
return render(request, 'user_add.jinja', {'form': form}) 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' %} {% extends 'base.jinja' %}
{% block content %} {% 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 %} {% 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 %} {% endfor %}
{% endblock %} {% endblock %}