Add modular realm views

This commit is contained in:
Götz 2019-03-29 03:41:28 +01:00
parent dd4554b95e
commit f74ff77ac7
15 changed files with 77 additions and 24 deletions

View File

@ -4,6 +4,10 @@ from . import views
urlpatterns = [
path('realm/', views.realm, name='realm-home'),
path('realm/<int:id>/', views.realm_detail, name='realm-detail'),
path('realm/<int:id>/user/', views.realm_user, name='realm-user-list'),
path('realm/<int:id>/groups/', views.realm_groups, name='realm-group-list'),
path('realm/<int:id>/update/', views.realm_update, name='realm-update'),
path('user/list/', views.userlist, name='user-list'),
path('user/get/<str:dn>/', views.user_detail, name='user'),

View File

@ -26,10 +26,15 @@ def realm(request):
return redirect('realm-detail', realm_obj.id)
else:
form = RealmAddForm()
return render(request, 'realm/realm_home.jinja', {'realms': realms, 'form': form})
return render(request, 'realm/realm_home.jinja2', {'realms': realms, 'form': form})
def realm_detail(request, id):
realm_obj = Realm.objects.get(id=id)
return render(request, 'realm/realm_detailed.jinja2', {'realm': realm_obj})
def realm_update(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,
@ -48,10 +53,25 @@ def realm_detail(request, id):
return redirect('realm-detail', realm_obj.id)
else:
form = RealmUpdateForm(initial=data)
return render(request, 'realm/realm_detailed.jinja', {'realm': realm_obj, 'form': form})
return render(request, 'realm/realm_update.jinja2', {'realm': realm_obj, 'form': form})
else:
realm_obj = Realm.objects.get(id=id)
return render(request, 'realm/realm_detailed.jinja', {'realm': realm_obj})
return render(request, 'realm/realm_update.jinja2', {'realm': realm_obj})
def realm_user(request, id):
realm_obj = Realm.objects.get(id=id)
dn = f'uid=*,ou=people,{realm_obj.ldap_rdn_org},{LdapUser.base_dn}'
realm_users = LdapUser.objects.filter(dn=dn)
return render(request, 'realm/realm_user.jinja2', {'realm': realm_obj, 'realm_user': realm_users})
def realm_groups(request, id):
realm_obj = Realm.objects.get(id=id)
dn = f'ou=groups,{realm_obj.ldap_rdn_org},{LdapUser.base_dn}'
LdapGroup.base_dn = dn
realm_groups_obj = LdapGroup.objects.all()
return render(request, 'realm/realm_groups.jinja2', {'realm': realm_obj, 'realm_groups': realm_groups_obj})
def userlist(request):
@ -59,13 +79,13 @@ def userlist(request):
groups = LdapGroup.objects.all()
context = {'users': user, 'groups': groups}
return render(request, 'user/user_list.jinja', context)
return render(request, 'user/user_list.jinja2', context)
def user_detail(request, dn):
user = LdapUser.objects.get(dn=dn)
context = {'user': user, }
return render(request, 'user/user_detail.jinja', context)
return render(request, 'user/user_detail.jinja2', context)
def user_add(request):
@ -89,13 +109,13 @@ def user_add(request):
else:
form = AddLDAPUserForm()
return render(request, 'user/user_add.jinja', {'form': form})
return render(request, 'user/user_add.jinja2', {'form': form})
def group_detail(request, dn):
group = LdapGroup.objects.get(dn=dn)
context = {'group': group, }
return render(request, 'user/group_detail.jinja', context)
return render(request, 'user/group_detail.jinja2', context)
def group_add(request):
@ -116,4 +136,4 @@ def group_add(request):
else:
form = AddLDAPGroupForm()
return render(request, 'group/group_add.jinja', {'form': form})
return render(request, 'group/group_add.jinja2', {'form': form})

View File

@ -1,4 +1,4 @@
{% extends 'base.jinja' %}
{% extends 'base.jinja2' %}
{% block content %}
<a href="{{ url('user-add') }}">Nutzer anlegen</a> | <a href="{{ url('group-add') }}">Gruppe anlegen</a>
<h1>Bereich {{ realm.name }}</h1>
@ -7,17 +7,16 @@
<p>Email: {{ realm.email }}</p>
<p>Admin Gruppe: {{ realm.admin_group }}</p>
<h2>Bereichsinformationen anpassen</h2>
<form method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ form.as_p()|safe }}
<button type="submit">Speichern</button>
</form>
<h2>Nutzer</h2>
{% block user_content %}
{% block realm_form %}
<h2><a href="{{ url('realm-update', args=[realm.id]) }}">Bereichsinformationen anpassen</a></h2>
{% endblock %}
<h2>Gruppen</h2>
{% block gruppen_content %}
{% block user_content %}
<h2><a href="{{ url('realm-user-list', args=[realm.id]) }}">Nutzer</a></h2>
{% endblock %}
{% block groups_content %}
<h2><a href="{{ url('realm-group-list', args=[realm.id]) }}">Gruppen</a></h2>
{% endblock %}
{% endblock %}

View File

@ -0,0 +1,15 @@
{% extends 'realm/realm_detailed.jinja2' %}
{% block groups_content %}
<h2>Gruppen</h2>
{% for group in realm_groups %}
<h3>{{ group.name }}</h3>
<p>DN: {{ group.dn }}</p>
<p>Nutzername: {{ group.name }}</p>
<h2>Mitglieder</h2>
{% for user in group.members %}
<p>{{ user }}</p>
{% endfor %}
<hr>
{% endfor %}
{% endblock %}

View File

@ -1,4 +1,4 @@
{% extends 'base.jinja' %}
{% extends 'base.jinja2' %}
{% block content %}
<a href="{{ url('user-add') }}">Nutzer anlegen</a> | <a href="{{ url('group-add') }}">Gruppe anlegen</a>

View File

@ -0,0 +1,8 @@
{% extends 'realm/realm_detailed.jinja2' %}
{% block realm_form %}
<form method="post">
<input type="hidden" name="csrfmiddlewaretoken" value="{{ csrf_token }}">
{{ form.as_p()|safe }}
<button type="submit">Speichern</button>
</form>
{% endblock %}

View File

@ -0,0 +1,7 @@
{% extends 'realm/realm_detailed.jinja2' %}
{% block user_content %}
<h2>Nutzer</h2>
{% for user in realm_user %}
<p>{{ user.username }} - <a href="{{ url('user', args=[user.dn]) }}">{{ user.dn }}</a></p>
{% endfor %}
{% endblock %}

View File

@ -1,4 +1,4 @@
{% extends 'base.jinja' %}
{% extends 'base.jinja2' %}
{% block title %}Login{% endblock %}

View File

@ -1,4 +1,4 @@
{% extends 'base.jinja' %}
{% extends 'base.jinja2' %}
{% block content %}
<a href="{{ url('user-list') }}">Nutzerübersicht</a>
<p>DN: {{ user.dn }}</p>

View File

@ -1,4 +1,4 @@
{% extends 'base.jinja' %}
{% extends 'base.jinja2' %}
{% block content %}
<a href="{{ url('user-add') }}">Nutzer anlegen</a> | <a href="{{ url('group-add') }}">Gruppe anlegen</a>
<h2>Nutzer</h2>