Add realm overview

This commit is contained in:
Götz 2019-03-28 18:04:03 +01:00
parent fe3b61a3c1
commit 73a8ff5380
23 changed files with 137 additions and 28 deletions

View File

@ -2,4 +2,4 @@ from django.apps import AppConfig
class RdnHelperConfig(AppConfig):
name = 'rdn_helper'
name = 'account_helper'

View File

@ -1,5 +1,5 @@
from django.core.management.base import BaseCommand, CommandError
from rdn_helper.models import LdapGroupRDN, LdapUserRDN
from account_helper.models import LdapGroupRDN, LdapUserRDN
LDAP_OUS = ['ou=fs_wiai,ou=fachschaften', 'ou=fs_sowi,ou=fachschaften']

27
account_helper/models.py Normal file
View File

@ -0,0 +1,27 @@
from django.db import models
from django.contrib.auth.models import User, Group
# Create your models here.
class Realm(models.Model):
name = models.CharField(max_length=200, unique=True)
email = models.EmailField(blank=True, null=True)
admin_group = models.ForeignKey(Group, models.PROTECT, blank=True, null=True)
ldap_rdn_org = models.CharField(max_length=400, unique=True)
def __str__(self):
return f'{self.name} - {self.ldap_rdn_org}'
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

View File

@ -1,5 +1,6 @@
from django import forms
from rdn_helper.models import LdapUserRDN, LdapGroupRDN
from django.contrib.auth.models import User, Group
from account_helper.models import LdapUserRDN, LdapGroupRDN
from .models import LdapUser
@ -15,3 +16,15 @@ 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())
class RealmAddForm(forms.Form):
name = forms.CharField(label='name', max_length=200)
ldap_rdn_org = forms.CharField(label='ldap_rdn_org', max_length=200)
class RealmUpdateForm(forms.Form):
ldap_rdn_org = forms.CharField(label='ldap_rdn_org', max_length=200)
name = forms.CharField(label='name', max_length=200)
email = forms.EmailField()
admins = forms.ModelChoiceField(widget=forms.CheckboxSelectMultiple, queryset=Group.objects.all())

View File

@ -2,6 +2,8 @@ from django.urls import path
from . import views
urlpatterns = [
path('realm/', views.realm, name='realm-home'),
path('realm/<int:id>/', views.realm_detail, name='realm-detail'),
path('user/list/', views.userlist, name='user-list'),
path('user/get/<str:dn>/', views.user_detail, name='user'),

View File

@ -1,6 +1,7 @@
from django.shortcuts import render, redirect
from .models import LdapGroup, LdapUser
from .forms import AddLDAPUserForm, AddLDAPGroupForm
from .forms import AddLDAPUserForm, AddLDAPGroupForm, RealmAddForm, RealmUpdateForm
from account_helper.models import Realm
# @login_required
@ -12,18 +13,47 @@ from .forms import AddLDAPUserForm, AddLDAPGroupForm
# context = {'request': request, 'ldapuser': ldapuserprofile, }
# return render(request, 'myapp/userinfo.html', context)
def realm(request):
realms = Realm.objects.all()
if request.method == 'POST':
form = RealmAddForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
ldap_rdn_org = form.cleaned_data['ldap_rdn_org']
realm_obj = Realm.objects.create(name=name, ldap_rdn_org=ldap_rdn_org)
realm_obj.save()
return redirect('realm-detail', realm_obj.id)
else:
form = RealmAddForm()
return render(request, 'realm/realm_home.jinja', {'realms': realms, 'form': form})
def realm_detail(request, id):
if request.user.is_superuser:
realm_obj = Realm.objects.get(id=id)
data = {'id': realm_obj.id, 'ldap_rdn_org': realm_obj.ldap_rdn_org, 'name': realm_obj.name,
'email': realm_obj.email,
'admin_group': realm_obj.admin_group}
if request.method == 'POST':
form = RealmUpdateForm(request.POST)
if form.is_valid():
name = form.cleaned_data['name']
ldap_rdn_org = form.cleaned_data['ldap_rdn_org']
realm_obj = Realm.objects.create(name=name, ldap_rdn_org=ldap_rdn_org)
realm_obj.save()
return redirect('realm-detail', realm_obj.id)
else:
form = RealmUpdateForm(initial=data)
return render(request, 'realm/realm_home.jinja', {'realm': realm_obj, 'form': form})
else:
realm_obj = Realm.objects.get(id=id)
return render(request, 'realm/realm_home.jinja', {'realm': realm_obj})
def userlist(request):
user = LdapUser.objects.all()
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',
# last_name='red1', )
# new_group = LdapGroup.objects.create(rdn='ou=groups,ou=fs_wiai,ou=fachschaften', name="funny_wiai12",
# members=['dc=stuve,dc=de'])
# new_group.save()
return render(request, 'user_list.jinja', context)

View File

@ -29,6 +29,8 @@ DEBUG = True
ALLOWED_HOSTS = []
# Application definition
LOGIN_URL = 'login'
LOGIN_REDIRECT_URL = 'realm-home'
INSTALLED_APPS = [
'django.contrib.admin',
@ -38,7 +40,7 @@ INSTALLED_APPS = [
'django.contrib.messages',
'django.contrib.staticfiles',
'account_manager',
'rdn_helper',
'account_helper',
]
MIDDLEWARE = [

View File

@ -15,8 +15,11 @@ Including another URLconf
"""
from django.contrib import admin
from django.urls import path, include
from django.contrib.auth import views as auth_views
urlpatterns = [
path('', include('account_manager.urls')),
path('admin/', admin.site.urls),
path('login/', auth_views.LoginView.as_view(), name='login'),
path('logout/', auth_views.LogoutView.as_view(), {'next_page': '/'}, name='logout'),
]

View File

@ -1,16 +0,0 @@
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

View File

@ -0,0 +1,15 @@
{% extends 'base.jinja' %}
{% block content %}
<a href="{{ url('user-add') }}">Nutzer anlegen</a> | <a href="{{ url('group-add') }}">Gruppe anlegen</a>
<h2>Neuen Bereich anlegen</h2>
<form method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ form.as_p()|safe }}
<button type="submit">Login</button>
</form>
<h2>Realms</h2>
{% for realm in realms %}
<p>{{ realm.name }}</p>
{% endfor %}
{% endblock %}

View File

@ -0,0 +1,15 @@
{% extends 'base.jinja' %}
{% block content %}
<a href="{{ url('user-add') }}">Nutzer anlegen</a> | <a href="{{ url('group-add') }}">Gruppe anlegen</a>
<h2>Neuen Bereich anlegen</h2>
<form method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ form.as_p()|safe }}
<button type="submit">Login</button>
</form>
<h2>Realms</h2>
{% for realm in realms %}
<p>{{ realm.name }}</p>
{% endfor %}
{% endblock %}

View File

@ -0,0 +1,18 @@
{% extends 'base.jinja' %}
{% block title %}Login{% endblock %}
{% block content %}
<div class="col-12 ">
<div class="row justify-content-center justify-content-sm-center">
<div class="col-12 col-sm-6 col-md-5 col-lg-4 col-xl-3 bg-white text-dark text-center p-3 mt-5">
<h2>Login</h2>
<form method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ form.as_p()|safe }}
<button type="submit">Login</button>
</form>
</div>
</div>
</div>
{% endblock %}