From 4b3aeee7c73ed63beef8c9d98111bd76d33278e2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20G=C3=B6tz?= Date: Thu, 28 Mar 2019 04:34:48 +0100 Subject: [PATCH] Implement group creation --- account_manager/forms.py | 9 ++++++++- account_manager/urls.py | 1 + account_manager/views.py | 26 ++++++++++++++++++++++++-- templates/group_add.jinja | 5 +++++ templates/user_list.jinja | 10 ++++++++-- 5 files changed, 46 insertions(+), 5 deletions(-) create mode 100644 templates/group_add.jinja diff --git a/account_manager/forms.py b/account_manager/forms.py index 42b09f8..e5b6d7d 100644 --- a/account_manager/forms.py +++ b/account_manager/forms.py @@ -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()) diff --git a/account_manager/urls.py b/account_manager/urls.py index 44003ff..3959015 100644 --- a/account_manager/urls.py +++ b/account_manager/urls.py @@ -5,4 +5,5 @@ urlpatterns = [ path('user/list/', views.userlist, name='user-list'), path('user/get//', views.userlist, name='user'), path('user/add/', views.adduser, name='user-add'), + path('group/add/', views.addgroup, name='group-add'), ] diff --git a/account_manager/views.py b/account_manager/views.py index 4c38447..4c03564 100644 --- a/account_manager/views.py +++ b/account_manager/views.py @@ -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}) diff --git a/templates/group_add.jinja b/templates/group_add.jinja new file mode 100644 index 0000000..f957d6a --- /dev/null +++ b/templates/group_add.jinja @@ -0,0 +1,5 @@ +
+ + {{ form.as_p() }} + +
\ No newline at end of file diff --git a/templates/user_list.jinja b/templates/user_list.jinja index cab2566..f6d278e 100644 --- a/templates/user_list.jinja +++ b/templates/user_list.jinja @@ -1,7 +1,13 @@ {% extends 'base.jinja' %} {% block content %} - + Nutzer anlegen | Gruppe anlegen +

Nutzer

{% for user in users %} -

{{ user.dn }} - {{ user.username }}

+

{{ user.username }} - {{ user.dn }}

+ {% endfor %} + +

Gruppen

+ {% for group in groups %} +

{{ group.name }} - {{ group.dn }}

{% endfor %} {% endblock %}