Add simple rdn selection
This commit is contained in:
parent
c35c59ebfc
commit
2147439e6c
@ -0,0 +1,10 @@
|
|||||||
|
from django import forms
|
||||||
|
from rdn_helper.models import LdapUserRDN
|
||||||
|
|
||||||
|
|
||||||
|
class AddLDAPUserForm(forms.Form):
|
||||||
|
rdn = forms.ModelChoiceField(queryset=LdapUserRDN.objects.all())
|
||||||
|
username = forms.CharField(label='username', max_length=400)
|
||||||
|
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)
|
||||||
@ -1,4 +1,5 @@
|
|||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
from django.db import models
|
||||||
from ldapdb.models import fields as ldap_fields
|
from ldapdb.models import fields as ldap_fields
|
||||||
from ldapdb.models.base import Model
|
from ldapdb.models.base import Model
|
||||||
|
|
||||||
|
|||||||
@ -2,6 +2,7 @@ from django.urls import path
|
|||||||
from . import views
|
from . import views
|
||||||
|
|
||||||
urlpatterns = [
|
urlpatterns = [
|
||||||
path('user-list/', views.userlist, name='userlist'),
|
path('user/list/', views.userlist, name='user-list'),
|
||||||
path('user/<str:dn>', views.userlist, name='user'),
|
path('user/get/<str:dn>/', views.userlist, name='user'),
|
||||||
|
path('user/add/', views.adduser, name='user-add'),
|
||||||
]
|
]
|
||||||
|
|||||||
@ -1,8 +1,9 @@
|
|||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.http import HttpResponseRedirect
|
from django.http import HttpResponseRedirect
|
||||||
from django.shortcuts import render
|
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
|
||||||
|
|
||||||
|
|
||||||
# @login_required
|
# @login_required
|
||||||
@ -33,3 +34,27 @@ def changelist(request, dn):
|
|||||||
user = User.objects.get(dn=dn)
|
user = User.objects.get(dn=dn)
|
||||||
context = {'user': user, }
|
context = {'user': user, }
|
||||||
return render(request, 'user_detail.jinja', context)
|
return render(request, 'user_detail.jinja', context)
|
||||||
|
|
||||||
|
|
||||||
|
def adduser(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 = AddLDAPUserForm(request.POST)
|
||||||
|
# check whether it's valid:
|
||||||
|
if form.is_valid():
|
||||||
|
rdn = form.cleaned_data['rdn']
|
||||||
|
username = form.cleaned_data['username']
|
||||||
|
password = form.cleaned_data['password']
|
||||||
|
first_name = form.cleaned_data['first_name']
|
||||||
|
last_name = form.cleaned_data['last_name']
|
||||||
|
LdapUser.objects.create(rdn=rdn, username=username,
|
||||||
|
password=password, first_name=first_name,
|
||||||
|
last_name=last_name, )
|
||||||
|
return redirect('user-list')
|
||||||
|
|
||||||
|
# if a GET (or any other method) we'll create a blank form
|
||||||
|
else:
|
||||||
|
form = AddLDAPUserForm()
|
||||||
|
|
||||||
|
return render(request, 'user_add.jinja', {'form': form})
|
||||||
|
|||||||
@ -37,7 +37,8 @@ INSTALLED_APPS = [
|
|||||||
'django.contrib.sessions',
|
'django.contrib.sessions',
|
||||||
'django.contrib.messages',
|
'django.contrib.messages',
|
||||||
'django.contrib.staticfiles',
|
'django.contrib.staticfiles',
|
||||||
'account_manager.apps.AccountManagerConfig',
|
'account_manager',
|
||||||
|
'rdn_helper',
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
|||||||
0
rdn_helper/__init__.py
Normal file
0
rdn_helper/__init__.py
Normal file
3
rdn_helper/admin.py
Normal file
3
rdn_helper/admin.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from django.contrib import admin
|
||||||
|
|
||||||
|
# Register your models here.
|
||||||
5
rdn_helper/apps.py
Normal file
5
rdn_helper/apps.py
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class RdnHelperConfig(AppConfig):
|
||||||
|
name = 'rdn_helper'
|
||||||
0
rdn_helper/management/__init__.py
Normal file
0
rdn_helper/management/__init__.py
Normal file
0
rdn_helper/management/commands/__init__.py
Normal file
0
rdn_helper/management/commands/__init__.py
Normal file
21
rdn_helper/management/commands/import_dns.py
Normal file
21
rdn_helper/management/commands/import_dns.py
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
from django.core.management.base import BaseCommand, CommandError
|
||||||
|
from rdn_helper.models import LdapGroupRDN, LdapUserRDN
|
||||||
|
|
||||||
|
LDAP_OUS = ['ou=fs_wiai,ou=fachschaften', 'ou=fs_sowi,ou=fachschaften']
|
||||||
|
|
||||||
|
|
||||||
|
class Command(BaseCommand):
|
||||||
|
help = 'Load Possible User Dns in LDAP'
|
||||||
|
|
||||||
|
def handle(self, *args, **options):
|
||||||
|
added_groups_rdn = 0
|
||||||
|
added_user_rdn = 0
|
||||||
|
for ou in LDAP_OUS:
|
||||||
|
_, group_created = LdapGroupRDN.objects.get_or_create(rdn=f'ou=groups,{ou}')
|
||||||
|
_, user_created = LdapUserRDN.objects.get_or_create(rdn=f'ou=people,{ou}')
|
||||||
|
if group_created:
|
||||||
|
added_groups_rdn += 1
|
||||||
|
if user_created:
|
||||||
|
added_user_rdn += 1
|
||||||
|
|
||||||
|
print(f'Added {added_user_rdn} user rdns\nAdded {added_groups_rdn} group rdns')
|
||||||
16
rdn_helper/models.py
Normal file
16
rdn_helper/models.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
from django.db import models
|
||||||
|
|
||||||
|
|
||||||
|
# Create your models here.
|
||||||
|
class LdapUserRDN(models.Model):
|
||||||
|
rdn = models.CharField(max_length=400, unique=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.rdn
|
||||||
|
|
||||||
|
|
||||||
|
class LdapGroupRDN(models.Model):
|
||||||
|
rdn = models.CharField(max_length=400, unique=True)
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.rdn
|
||||||
3
rdn_helper/tests.py
Normal file
3
rdn_helper/tests.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
||||||
3
rdn_helper/views.py
Normal file
3
rdn_helper/views.py
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
from django.shortcuts import render
|
||||||
|
|
||||||
|
# Create your views here.
|
||||||
5
templates/user_add.jinja
Normal file
5
templates/user_add.jinja
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
<form action="{{ url('user-add') }}" method="post">
|
||||||
|
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
|
||||||
|
{{ form.as_p() }}
|
||||||
|
<input type="submit" value="Submit">
|
||||||
|
</form>
|
||||||
Reference in New Issue
Block a user