Refractor views, Add status codes to realm add

This commit is contained in:
Götz 2019-06-12 03:47:32 +02:00
parent b82c610a9f
commit 8523ce0825
2 changed files with 59 additions and 59 deletions

View File

@ -12,7 +12,7 @@ from ldap import LDAPError
from account_helper.models import Realm
from account_manager.utils.mail_utils import realm_send_mail
from account_manager.utils.main_views import render_realm_detail_page
from account_manager.utils.main_views import render_permission_denied_view, render_realm_detail_view
from .forms import RealmAddForm, RealmUpdateForm
from .models import LdapGroup, LdapUser
@ -27,7 +27,7 @@ def is_realm_admin(view_func):
admin_group__user__username__contains=request.user.username)) > 0):
return view_func(request, *args, **kwargs)
else:
return redirect('permission-denied')
return render_permission_denied_view(request)
return decorator
@ -68,7 +68,6 @@ def _get_group_user_count_wrapper(realm):
@login_required
@is_realm_admin
def realm_add(request):
if request.user.is_superuser:
realms = Realm.objects.all().order_by('name')
@ -80,21 +79,20 @@ def realm_add(request):
try:
base_dn_available(ldap_base_dn)
realm_obj = Realm.objects.create(name=name, ldap_base_dn=ldap_base_dn)
realm_obj.save()
return redirect('realm-detail', realm_obj.id)
realm = Realm.objects.create(name=name, ldap_base_dn=ldap_base_dn)
realm.save()
return render_realm_detail_view(request, realm.id, status_code=201)
except IntegrityError as err:
return render(request, 'realm/realm_add_failed.jinja2',
{'realm_name': name, 'error': err})
{'realm_name': name, 'error': err}, status=409)
except LDAPError as err:
logger.debug("Ldap Error", err)
return render(request, 'realm/realm_add_failed.jinja2',
{'realm_name': name})
{'realm_name': name}, status=409)
else:
form = RealmAddForm()
return render(request, 'realm/realm_add.jinja2', {'realms': realms, 'form': form})
else:
redirect('permission-denied')
return render_permission_denied_view(request)
def base_dn_available(base_dn):
@ -106,38 +104,7 @@ def base_dn_available(base_dn):
@login_required
@is_realm_admin
def realm_detail(request, realm_id):
return get_realm_detail_rendered(request, realm_id)
def get_realm_detail_rendered(request, realm_id, success_headline=None, success_text=None, error_headline=None,
error_text=None):
realm = Realm.objects.get(id=realm_id)
ldap_admin_group, ldap_default_group = get_default_admin_group(realm)
LdapUser.base_dn = realm.ldap_base_dn
inactive_users = LdapUser.get_inactive_users().count()
ldap_admin_group, ldap_default_group = get_default_admin_group(realm)
return render(request, 'realm/realm_detailed.jinja2',
{'realm': realm,
'ldap_admin_group': ldap_admin_group,
'ldap_default_group': ldap_default_group,
'inactive_user_count': inactive_users,
'users_count': LdapUser.objects.all().count(),
'success_headline': success_headline,
'success_text': success_text,
'error_headline': error_headline,
'error_text': error_text})
def get_default_admin_group(realm):
ldap_admin_group = None
ldap_default_group = None
if realm.admin_group:
LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}'
ldap_admin_group = LdapGroup.objects.get(name=realm.admin_group.name)
if realm.default_group:
LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}'
ldap_default_group = LdapGroup.objects.get(name=realm.default_group.name)
return ldap_admin_group, ldap_default_group
return render_realm_detail_view(request, realm_id)
@login_required
@ -220,7 +187,7 @@ def realm_delete(request, realm_id):
def permission_denied(request):
return render(request, 'permission_denied.jinja2', {})
return render_permission_denied_view(request)
def realm_email_test(request, realm_id):
@ -229,15 +196,15 @@ def realm_email_test(request, realm_id):
realm_send_mail(realm, realm.email, f'{realm.name} Test Mail',
f'Du hast die Mail Konfiguration für {realm.name} erfolgreich abgeschlossen.')
except SMTPAuthenticationError as err:
return get_realm_detail_rendered(request, realm_id, error_headline="Testmail",
return render_realm_detail_view(request, realm_id, error_headline="Testmail",
error_text=f'Mail konnte nicht versendet werden, Anmeldedaten inkorrekt.')
except SMTPConnectError as err:
return get_realm_detail_rendered(request, realm_id, error_headline="Testmail",
return render_realm_detail_view(request, realm_id, error_headline="Testmail",
error_text=f'Mail konnte nicht versendet werden. Verbindungsaufbau abgelehnt. Bitte überprüfen sie die Server Addresse und den Port')
except timeout as err:
return get_realm_detail_rendered(request, realm_id, error_headline="Testmail",
return render_realm_detail_view(request, realm_id, error_headline="Testmail",
error_text=f'Mail konnte nicht versendet werden. Zeitüberschreitung beim Verbindungsaufbau. Bitte überprüfen sie die Server Addresse und den Port')
except SMTPException:
return get_realm_detail_rendered(request, realm_id, error_headline="Testmail",
return render_realm_detail_view(request, realm_id, error_headline="Testmail",
error_text=f'Mail konnte nicht versendet werden. Bitte kontaktieren sie den Administrator')
return get_realm_detail_rendered(request, realm_id, success_headline="Testmail", success_text='Test erfolgreich')
return render_realm_detail_view(request, realm_id, success_headline="Testmail", success_text='Test erfolgreich')

View File

@ -1,16 +1,49 @@
from django.shortcuts import render
from account_helper.models import Realm
from account_manager.main_views import get_default_admin_group
from account_manager.models import LdapUser
from account_manager.models import LdapUser, LdapGroup
def render_realm_detail_page(realm_id, request, notice=""):
# def render_realm_detail_page(realm_id, request, notice=""):
# realm = Realm.objects.get(id=realm_id)
# ldap_admin_group, ldap_default_group = get_default_admin_group(realm)
# LdapUser.base_dn = realm.ldap_base_dn
# inactive_users = LdapUser.get_inactive_users().count()
# return render(request, 'realm/realm_detailed.jinja2',
# {'realm': realm, 'ldap_admin_group': ldap_admin_group, 'ldap_default_group': ldap_default_group,
# 'inactive_user_count': inactive_users, 'users_count': LdapUser.objects.all().count(),
# 'notice': notice})
def render_realm_detail_view(request, realm_id, success_headline=None, success_text=None, error_headline=None,
error_text=None, status_code=200):
realm = Realm.objects.get(id=realm_id)
ldap_admin_group, ldap_default_group = get_default_admin_group(realm)
LdapUser.base_dn = realm.ldap_base_dn
inactive_users = LdapUser.get_inactive_users().count()
ldap_admin_group, ldap_default_group = get_default_admin_group(realm)
return render(request, 'realm/realm_detailed.jinja2',
{'realm': realm, 'ldap_admin_group': ldap_admin_group, 'ldap_default_group': ldap_default_group,
'inactive_user_count': inactive_users, 'users_count': LdapUser.objects.all().count(),
'notice': notice})
{'realm': realm,
'ldap_admin_group': ldap_admin_group,
'ldap_default_group': ldap_default_group,
'inactive_user_count': inactive_users,
'users_count': LdapUser.objects.all().count(),
'success_headline': success_headline,
'success_text': success_text,
'error_headline': error_headline,
'error_text': error_text}, status=status_code)
def get_default_admin_group(realm):
ldap_admin_group = None
ldap_default_group = None
if realm.admin_group:
LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}'
ldap_admin_group = LdapGroup.objects.get(name=realm.admin_group.name)
if realm.default_group:
LdapGroup.base_dn = f'ou=groups,{realm.ldap_base_dn}'
ldap_default_group = LdapGroup.objects.get(name=realm.default_group.name)
return ldap_admin_group, ldap_default_group
def render_permission_denied_view(request):
return render(request, 'permission_denied.jinja2', {}, status=403)