Implement super admin pagei, Close #66

This commit is contained in:
Götz 2019-05-07 16:32:19 +02:00
parent 0f52c4bfab
commit dc8cd6e3e1
6 changed files with 115 additions and 11 deletions

View File

@ -3,8 +3,14 @@ from django.urls import path
from . import main_views
from account_manager.views import user_views
from account_manager.views import group_views
from account_manager.views import super_admin_views
urlpatterns = [
# Superadmin
path('lama/admin/list', super_admin_views.user_list, name='django-additional-admin-list'),
path('lama/admin/add/<int:user_id>/', super_admin_views.add_superuser, name='django-additional-admin-add'),
path('lama/admin/remove/<int:user_id>/', super_admin_views.remove_superuser, name='django-additional-admin-remove'),
# Realm
path('', main_views.realm_list, name='realm-home'),
path('realm/add/', main_views.realm_add, name='realm-add'),

View File

@ -0,0 +1,41 @@
from django.contrib.auth.decorators import user_passes_test
from django.contrib.auth.models import User
from django.shortcuts import render, redirect
from django.core.exceptions import ObjectDoesNotExist
import logging
logger = logging.getLogger(__name__)
@user_passes_test(lambda u: u.is_superuser)
def user_list(request):
return render(request, 'admin/list_user.jinja2', {'users': _get_django_users()})
def _get_django_users():
users = User.objects.all().order_by('username')
return users
@user_passes_test(lambda u: u.is_superuser)
def add_superuser(request, user_id):
try:
user = User.objects.get(id=user_id)
user.is_superuser = True
user.save()
return redirect('django-additional-admin-list')
except ObjectDoesNotExist as err:
return render(request, 'admin/list_user.jinja2',
{'users': _get_django_users(), 'extra_errors': 'Nutzer ist uns nicht bekannt'})
@user_passes_test(lambda u: u.is_superuser)
def remove_superuser(request, user_id):
try:
user = User.objects.get(id=user_id)
user.is_superuser = False
user.save()
return redirect('django-additional-admin-list')
except ObjectDoesNotExist as err:
return render(request, 'admin/list_user.jinja2',
{'users': _get_django_users(), 'extra_errors': 'Nutzer ist uns nicht bekannt'})

View File

@ -213,13 +213,13 @@ LOGGING = {
'handlers': ['console', ],
'level': 'DEBUG',
},
'django_auth_ldap': {
'level': 'DEBUG',
'handlers': ['console'],
},
'django': {
'handlers': ['console'],
'level': 'DEBUG',
}
# 'django_auth_ldap': {
# 'level': 'WARNING',
# 'handlers': ['console'],
# },
# 'django': {
# 'handlers': ['console'],
# 'level': 'DEBUG',
# }
},
}

View File

@ -0,0 +1,51 @@
{% extends 'base_admin.jinja2' %}
{% import 'macros/form_macros.jinja2' as mform %}
{% import 'macros/utils_macros.jinja2' as mutils %}
{% block admin_content %}
<div class="row">
<div class="col-12">
<h2>Django bekannte Nutzer</h2>
{{ mutils.get_warning_box(extra_errors) }}
<div class="alert alert-info">Um einen Nutzer zum Superadmin zu ernennen, klicke auf das Superadmin Icon
</div>
<div class="table-search-field form-group w-25 float-right">
<input type="text"
class="form-control"
id="data-table-search-input">
<label for="data-table-search-input">Suche</label>
</div>
<table class="table table-hover table-striped table-inverse table-bordered data-table">
<thead>
<tr>
<th scope="col">Superadmin</th>
<th scope="col">Nutzername</th>
<th scope="col">E-Mail</th>
<th scope="col">Vorname</th>
<th scope="col">Nachname</th>
</tr>
</thead>
<tbody>
{% for user in users %}
<tr>
<td class="text-center">{% if user.is_superuser %}
<a href="{{ url('django-additional-admin-remove', args=[user.id]) }}"><i
class="fas fa-check-circle text-success"></i></a>{% else %}
<a href="{{ url('django-additional-admin-add', args=[user.id]) }}"><i
class="far fa-times-circle text-warning"></i></a>{% endif %}
</td>
<td>
{{ user.username }}
</td>
<td><a href="mailto:{{ user.email }}">{{ user.email }}</a></td>
<td>{{ user.first_name }}</td>
<td>{{ user.last_name }}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endblock %}

View File

@ -30,7 +30,6 @@
{% block extra_nav %}
{% endblock %}
<a class="navbar-brand" href="{{ url('realm-home') }}">
{# TODO: Icon#}
<img src="{{ static('images/lama.svg') }}" width="30" height="30" class="d-inline-block align-top"
alt="">
LAMa
@ -50,7 +49,7 @@
{% block content %}{% endblock %}
{% endblock %}
{% if not realms and not realm %}
{% if not realms and not realm and not request.user.is_superuser%}
<footer class="bg-light footer mt-auto py-3 text-center">
<div class="container">

View File

@ -3,6 +3,13 @@
{% block body %}
<div class="d-flex wrapper">
<div class="bg-light border-right sidebar-wrapper">
<div class="border-top w-100"></div>
{% if request.user.is_superuser %}
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action bg-light"
href="{{ url('django-additional-admin-list') }}">Django Adminbereich</a>
</div>
{% endif %}
{% if realms %}
<h2 class="sidebar-heading">Bereiche</h2>
<div class="list-group list-group-flush">
@ -12,7 +19,7 @@
{% endfor %}
</div>
{% else %}
<div class="list-group-flush border-top">
<div class="list-group-flush">
<a href="{{ url('realm-home') }}" class="list-group-item list-group-item-action bg-light">
<i class="fas fa-list"></i> Bereichsübersicht</a>
</div>