Add realm overview
This commit is contained in:
parent
fe3b61a3c1
commit
73a8ff5380
@ -2,4 +2,4 @@ from django.apps import AppConfig
|
||||
|
||||
|
||||
class RdnHelperConfig(AppConfig):
|
||||
name = 'rdn_helper'
|
||||
name = 'account_helper'
|
||||
@ -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
27
account_helper/models.py
Normal 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
|
||||
@ -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())
|
||||
|
||||
@ -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'),
|
||||
|
||||
|
||||
@ -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)
|
||||
|
||||
|
||||
@ -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 = [
|
||||
|
||||
@ -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'),
|
||||
]
|
||||
|
||||
@ -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
|
||||
15
templates/realm/realm_detailed.jinja
Normal file
15
templates/realm/realm_detailed.jinja
Normal 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 %}
|
||||
15
templates/realm/realm_home.jinja
Normal file
15
templates/realm/realm_home.jinja
Normal 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 %}
|
||||
18
templates/registration/login.html
Normal file
18
templates/registration/login.html
Normal 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 %}
|
||||
Reference in New Issue
Block a user