Refractor views, Add status codes to realm add
This commit is contained in:
parent
b82c610a9f
commit
8523ce0825
@ -12,7 +12,7 @@ from ldap import LDAPError
|
|||||||
|
|
||||||
from account_helper.models import Realm
|
from account_helper.models import Realm
|
||||||
from account_manager.utils.mail_utils import realm_send_mail
|
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 .forms import RealmAddForm, RealmUpdateForm
|
||||||
from .models import LdapGroup, LdapUser
|
from .models import LdapGroup, LdapUser
|
||||||
|
|
||||||
@ -27,7 +27,7 @@ def is_realm_admin(view_func):
|
|||||||
admin_group__user__username__contains=request.user.username)) > 0):
|
admin_group__user__username__contains=request.user.username)) > 0):
|
||||||
return view_func(request, *args, **kwargs)
|
return view_func(request, *args, **kwargs)
|
||||||
else:
|
else:
|
||||||
return redirect('permission-denied')
|
return render_permission_denied_view(request)
|
||||||
|
|
||||||
return decorator
|
return decorator
|
||||||
|
|
||||||
@ -68,7 +68,6 @@ def _get_group_user_count_wrapper(realm):
|
|||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@is_realm_admin
|
|
||||||
def realm_add(request):
|
def realm_add(request):
|
||||||
if request.user.is_superuser:
|
if request.user.is_superuser:
|
||||||
realms = Realm.objects.all().order_by('name')
|
realms = Realm.objects.all().order_by('name')
|
||||||
@ -80,21 +79,20 @@ def realm_add(request):
|
|||||||
try:
|
try:
|
||||||
base_dn_available(ldap_base_dn)
|
base_dn_available(ldap_base_dn)
|
||||||
|
|
||||||
realm_obj = Realm.objects.create(name=name, ldap_base_dn=ldap_base_dn)
|
realm = Realm.objects.create(name=name, ldap_base_dn=ldap_base_dn)
|
||||||
realm_obj.save()
|
realm.save()
|
||||||
return redirect('realm-detail', realm_obj.id)
|
return render_realm_detail_view(request, realm.id, status_code=201)
|
||||||
except IntegrityError as err:
|
except IntegrityError as err:
|
||||||
return render(request, 'realm/realm_add_failed.jinja2',
|
return render(request, 'realm/realm_add_failed.jinja2',
|
||||||
{'realm_name': name, 'error': err})
|
{'realm_name': name, 'error': err}, status=409)
|
||||||
except LDAPError as err:
|
except LDAPError as err:
|
||||||
logger.debug("Ldap Error", err)
|
logger.debug("Ldap Error", err)
|
||||||
return render(request, 'realm/realm_add_failed.jinja2',
|
return render(request, 'realm/realm_add_failed.jinja2',
|
||||||
{'realm_name': name})
|
{'realm_name': name}, status=409)
|
||||||
else:
|
else:
|
||||||
form = RealmAddForm()
|
form = RealmAddForm()
|
||||||
return render(request, 'realm/realm_add.jinja2', {'realms': realms, 'form': form})
|
return render(request, 'realm/realm_add.jinja2', {'realms': realms, 'form': form})
|
||||||
else:
|
return render_permission_denied_view(request)
|
||||||
redirect('permission-denied')
|
|
||||||
|
|
||||||
|
|
||||||
def base_dn_available(base_dn):
|
def base_dn_available(base_dn):
|
||||||
@ -106,38 +104,7 @@ def base_dn_available(base_dn):
|
|||||||
@login_required
|
@login_required
|
||||||
@is_realm_admin
|
@is_realm_admin
|
||||||
def realm_detail(request, realm_id):
|
def realm_detail(request, realm_id):
|
||||||
return get_realm_detail_rendered(request, realm_id)
|
return render_realm_detail_view(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
|
|
||||||
|
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@ -220,7 +187,7 @@ def realm_delete(request, realm_id):
|
|||||||
|
|
||||||
|
|
||||||
def permission_denied(request):
|
def permission_denied(request):
|
||||||
return render(request, 'permission_denied.jinja2', {})
|
return render_permission_denied_view(request)
|
||||||
|
|
||||||
|
|
||||||
def realm_email_test(request, realm_id):
|
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',
|
realm_send_mail(realm, realm.email, f'{realm.name} Test Mail',
|
||||||
f'Du hast die Mail Konfiguration für {realm.name} erfolgreich abgeschlossen.')
|
f'Du hast die Mail Konfiguration für {realm.name} erfolgreich abgeschlossen.')
|
||||||
except SMTPAuthenticationError as err:
|
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.')
|
error_text=f'Mail konnte nicht versendet werden, Anmeldedaten inkorrekt.')
|
||||||
except SMTPConnectError as err:
|
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')
|
error_text=f'Mail konnte nicht versendet werden. Verbindungsaufbau abgelehnt. Bitte überprüfen sie die Server Addresse und den Port')
|
||||||
except timeout as err:
|
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')
|
error_text=f'Mail konnte nicht versendet werden. Zeitüberschreitung beim Verbindungsaufbau. Bitte überprüfen sie die Server Addresse und den Port')
|
||||||
except SMTPException:
|
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')
|
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')
|
||||||
|
|||||||
@ -1,16 +1,49 @@
|
|||||||
from django.shortcuts import render
|
from django.shortcuts import render
|
||||||
|
|
||||||
from account_helper.models import Realm
|
from account_helper.models import Realm
|
||||||
from account_manager.main_views import get_default_admin_group
|
from account_manager.models import LdapUser, LdapGroup
|
||||||
from account_manager.models import LdapUser
|
|
||||||
|
|
||||||
|
|
||||||
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)
|
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
|
LdapUser.base_dn = realm.ldap_base_dn
|
||||||
inactive_users = LdapUser.get_inactive_users().count()
|
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',
|
return render(request, 'realm/realm_detailed.jinja2',
|
||||||
{'realm': realm, 'ldap_admin_group': ldap_admin_group, 'ldap_default_group': ldap_default_group,
|
{'realm': realm,
|
||||||
'inactive_user_count': inactive_users, 'users_count': LdapUser.objects.all().count(),
|
'ldap_admin_group': ldap_admin_group,
|
||||||
'notice': notice})
|
'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)
|
||||||
|
|||||||
Reference in New Issue
Block a user