From 73a8ff5380bc357bd1e8215cc0308ae095b6eb42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michael=20G=C3=B6tz?= Date: Thu, 28 Mar 2019 18:04:03 +0100 Subject: [PATCH] Add realm overview --- {rdn_helper => account_helper}/__init__.py | 0 {rdn_helper => account_helper}/admin.py | 0 {rdn_helper => account_helper}/apps.py | 2 +- .../management/__init__.py | 0 .../management/commands/__init__.py | 0 .../management/commands/import_dns.py | 2 +- account_helper/models.py | 27 +++++++++++ {rdn_helper => account_helper}/tests.py | 0 {rdn_helper => account_helper}/views.py | 0 account_manager/forms.py | 15 +++++- account_manager/urls.py | 2 + account_manager/views.py | 46 +++++++++++++++---- core/settings.py | 4 +- core/urls.py | 3 ++ rdn_helper/models.py | 16 ------- templates/{ => group}/group_add.jinja | 0 templates/{ => group}/group_detail.jinja | 0 templates/realm/realm_detailed.jinja | 15 ++++++ templates/realm/realm_home.jinja | 15 ++++++ templates/registration/login.html | 18 ++++++++ templates/{ => user}/user_add.jinja | 0 templates/{ => user}/user_detail.jinja | 0 templates/{ => user}/user_list.jinja | 0 23 files changed, 137 insertions(+), 28 deletions(-) rename {rdn_helper => account_helper}/__init__.py (100%) rename {rdn_helper => account_helper}/admin.py (100%) rename {rdn_helper => account_helper}/apps.py (71%) rename {rdn_helper => account_helper}/management/__init__.py (100%) rename {rdn_helper => account_helper}/management/commands/__init__.py (100%) rename {rdn_helper => account_helper}/management/commands/import_dns.py (92%) create mode 100644 account_helper/models.py rename {rdn_helper => account_helper}/tests.py (100%) rename {rdn_helper => account_helper}/views.py (100%) delete mode 100644 rdn_helper/models.py rename templates/{ => group}/group_add.jinja (100%) rename templates/{ => group}/group_detail.jinja (100%) create mode 100644 templates/realm/realm_detailed.jinja create mode 100644 templates/realm/realm_home.jinja create mode 100644 templates/registration/login.html rename templates/{ => user}/user_add.jinja (100%) rename templates/{ => user}/user_detail.jinja (100%) rename templates/{ => user}/user_list.jinja (100%) diff --git a/rdn_helper/__init__.py b/account_helper/__init__.py similarity index 100% rename from rdn_helper/__init__.py rename to account_helper/__init__.py diff --git a/rdn_helper/admin.py b/account_helper/admin.py similarity index 100% rename from rdn_helper/admin.py rename to account_helper/admin.py diff --git a/rdn_helper/apps.py b/account_helper/apps.py similarity index 71% rename from rdn_helper/apps.py rename to account_helper/apps.py index ec15df3..64c8df2 100644 --- a/rdn_helper/apps.py +++ b/account_helper/apps.py @@ -2,4 +2,4 @@ from django.apps import AppConfig class RdnHelperConfig(AppConfig): - name = 'rdn_helper' + name = 'account_helper' diff --git a/rdn_helper/management/__init__.py b/account_helper/management/__init__.py similarity index 100% rename from rdn_helper/management/__init__.py rename to account_helper/management/__init__.py diff --git a/rdn_helper/management/commands/__init__.py b/account_helper/management/commands/__init__.py similarity index 100% rename from rdn_helper/management/commands/__init__.py rename to account_helper/management/commands/__init__.py diff --git a/rdn_helper/management/commands/import_dns.py b/account_helper/management/commands/import_dns.py similarity index 92% rename from rdn_helper/management/commands/import_dns.py rename to account_helper/management/commands/import_dns.py index 394f6df..a844396 100644 --- a/rdn_helper/management/commands/import_dns.py +++ b/account_helper/management/commands/import_dns.py @@ -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'] diff --git a/account_helper/models.py b/account_helper/models.py new file mode 100644 index 0000000..95d1265 --- /dev/null +++ b/account_helper/models.py @@ -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 diff --git a/rdn_helper/tests.py b/account_helper/tests.py similarity index 100% rename from rdn_helper/tests.py rename to account_helper/tests.py diff --git a/rdn_helper/views.py b/account_helper/views.py similarity index 100% rename from rdn_helper/views.py rename to account_helper/views.py diff --git a/account_manager/forms.py b/account_manager/forms.py index e5b6d7d..6adc16c 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, 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()) diff --git a/account_manager/urls.py b/account_manager/urls.py index 61e81c1..3766b30 100644 --- a/account_manager/urls.py +++ b/account_manager/urls.py @@ -2,6 +2,8 @@ from django.urls import path from . import views urlpatterns = [ + path('realm/', views.realm, name='realm-home'), + path('realm//', views.realm_detail, name='realm-detail'), path('user/list/', views.userlist, name='user-list'), path('user/get//', views.user_detail, name='user'), diff --git a/account_manager/views.py b/account_manager/views.py index ed8c4f8..7e333e1 100644 --- a/account_manager/views.py +++ b/account_manager/views.py @@ -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) diff --git a/core/settings.py b/core/settings.py index e933370..9487796 100644 --- a/core/settings.py +++ b/core/settings.py @@ -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 = [ diff --git a/core/urls.py b/core/urls.py index d2bf842..7df1b85 100644 --- a/core/urls.py +++ b/core/urls.py @@ -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'), ] diff --git a/rdn_helper/models.py b/rdn_helper/models.py deleted file mode 100644 index 4a16253..0000000 --- a/rdn_helper/models.py +++ /dev/null @@ -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 diff --git a/templates/group_add.jinja b/templates/group/group_add.jinja similarity index 100% rename from templates/group_add.jinja rename to templates/group/group_add.jinja diff --git a/templates/group_detail.jinja b/templates/group/group_detail.jinja similarity index 100% rename from templates/group_detail.jinja rename to templates/group/group_detail.jinja diff --git a/templates/realm/realm_detailed.jinja b/templates/realm/realm_detailed.jinja new file mode 100644 index 0000000..95d6996 --- /dev/null +++ b/templates/realm/realm_detailed.jinja @@ -0,0 +1,15 @@ +{% extends 'base.jinja' %} +{% block content %} + Nutzer anlegen | Gruppe anlegen + +

Neuen Bereich anlegen

+
+ + {{ form.as_p()|safe }} + +
+

Realms

+ {% for realm in realms %} +

{{ realm.name }}

+ {% endfor %} +{% endblock %} diff --git a/templates/realm/realm_home.jinja b/templates/realm/realm_home.jinja new file mode 100644 index 0000000..cbb5497 --- /dev/null +++ b/templates/realm/realm_home.jinja @@ -0,0 +1,15 @@ +{% extends 'base.jinja' %} +{% block content %} + Nutzer anlegen | Gruppe anlegen + +

Neuen Bereich anlegen

+
+ + {{ form.as_p()|safe }} + +
+

Realms

+ {% for realm in realms %} +

{{ realm.name }}

+ {% endfor %} +{% endblock %} diff --git a/templates/registration/login.html b/templates/registration/login.html new file mode 100644 index 0000000..55a78bc --- /dev/null +++ b/templates/registration/login.html @@ -0,0 +1,18 @@ +{% extends 'base.jinja' %} + +{% block title %}Login{% endblock %} + +{% block content %} +
+
+
+

Login

+
+ + {{ form.as_p()|safe }} + +
+
+
+
+{% endblock %} \ No newline at end of file diff --git a/templates/user_add.jinja b/templates/user/user_add.jinja similarity index 100% rename from templates/user_add.jinja rename to templates/user/user_add.jinja diff --git a/templates/user_detail.jinja b/templates/user/user_detail.jinja similarity index 100% rename from templates/user_detail.jinja rename to templates/user/user_detail.jinja diff --git a/templates/user_list.jinja b/templates/user/user_list.jinja similarity index 100% rename from templates/user_list.jinja rename to templates/user/user_list.jinja