admin: add basic user admin

This commit is contained in:
Jens Langhammer 2018-12-14 14:24:04 +01:00
parent 196be4b3b0
commit 25fbadc813
4 changed files with 86 additions and 3 deletions

View File

@ -23,8 +23,8 @@
<li class="{% is_active 'passbook_admin:invitations' 'passbook_admin:invitation-create' 'passbook_admin:invitation-update' 'passbook_admin:invitation-delete' 'passbook_admin:invitation-test' %}"> <li class="{% is_active 'passbook_admin:invitations' 'passbook_admin:invitation-create' 'passbook_admin:invitation-update' 'passbook_admin:invitation-delete' 'passbook_admin:invitation-test' %}">
<a href="{% url 'passbook_admin:invitations' %}">{% trans 'Invitations' %}</a> <a href="{% url 'passbook_admin:invitations' %}">{% trans 'Invitations' %}</a>
</li> </li>
<li> <li class="{% is_active 'passbook_admin:users' 'passbook_admin:user-update' 'passbook_admin:user-delete' %}">
<a href="#">{% trans 'Users' %}</a> <a href="{% url 'passbook_admin:users' %}">{% trans 'Users' %}</a>
</li> </li>
<li class="{% is_active 'passbook_admin:audit-log' %}"> <li class="{% is_active 'passbook_admin:audit-log' %}">
<a href="{% url 'passbook_admin:audit-log' %}">{% trans 'Audit Log' %}</a> <a href="{% url 'passbook_admin:audit-log' %}">{% trans 'Audit Log' %}</a>

View File

@ -0,0 +1,38 @@
{% extends "administration/base.html" %}
{% load i18n %}
{% load utils %}
{% block content %}
<div class="container">
<h1>{% trans "Users" %}</h1>
<hr>
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>{% trans 'Username' %}</th>
<th>{% trans 'First Name' %}</th>
<th>{% trans 'Last Name' %}</th>
<th>{% trans 'Active' %}</th>
<th>{% trans 'Last Login' %}</th>
<th></th>
</tr>
</thead>
<tbody>
{% for user in object_list %}
<tr>
<td>{{ user.username }}</td>
<td>{{ user.first_name|default:'-' }}</td>
<td>{{ user.last_name|default:'-' }}</td>
<td>{{ user.is_active }}</td>
<td>{{ user.last_login }}</td>
<td>
<a class="btn btn-default btn-sm" href="{% url 'passbook_admin:user-update' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Edit' %}</a>
<a class="btn btn-default btn-sm" href="{% url 'passbook_admin:user-delete' pk=user.pk %}?back={{ request.get_full_path }}">{% trans 'Delete' %}</a>
</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
{% endblock %}

View File

@ -2,7 +2,7 @@
from django.urls import path from django.urls import path
from passbook.admin.views import (applications, audit, invitations, overview, from passbook.admin.views import (applications, audit, invitations, overview,
providers, rules, sources) providers, rules, sources, users)
urlpatterns = [ urlpatterns = [
path('', overview.AdministrationOverviewView.as_view(), name='overview'), path('', overview.AdministrationOverviewView.as_view(), name='overview'),
@ -40,6 +40,13 @@ urlpatterns = [
invitations.InvitationCreateView.as_view(), name='invitation-create'), invitations.InvitationCreateView.as_view(), name='invitation-create'),
path('invitations/<uuid:pk>/delete/', path('invitations/<uuid:pk>/delete/',
invitations.InvitationDeleteView.as_view(), name='invitation-delete'), invitations.InvitationDeleteView.as_view(), name='invitation-delete'),
# Users
path('users/', users.UserListView.as_view(),
name='users'),
path('users/<int:pk>/update/',
users.UserUpdateView.as_view(), name='user-update'),
path('users/<int:pk>/delete/',
users.UserDeleteView.as_view(), name='user-delete'),
# Audit Log # Audit Log
path('audit/', audit.AuditEntryListView.as_view(), name='audit-log'), path('audit/', audit.AuditEntryListView.as_view(), name='audit-log'),
# path('api/v1/', include('passbook.admin.api.v1.urls')) # path('api/v1/', include('passbook.admin.api.v1.urls'))

View File

@ -0,0 +1,38 @@
"""passbook User administration"""
from django.contrib.messages.views import SuccessMessageMixin
from django.shortcuts import get_object_or_404
from django.urls import reverse_lazy
from django.utils.translation import ugettext as _
from django.views.generic import DeleteView, ListView, TemplateView, UpdateView
from passbook.admin.mixins import AdminRequiredMixin
from passbook.core.forms.user import UserDetailForm
from passbook.core.models import User
class UserListView(AdminRequiredMixin, ListView):
"""Show list of all users"""
model = User
template_name = 'administration/user/list.html'
class UserUpdateView(SuccessMessageMixin, AdminRequiredMixin, UpdateView):
"""Update user"""
model = User
form_class = UserDetailForm
template_name = 'generic/update.html'
success_url = reverse_lazy('passbook_admin:users')
success_message = _('Successfully updated User')
class UserDeleteView(SuccessMessageMixin, AdminRequiredMixin, DeleteView):
"""Delete user"""
model = User
success_url = reverse_lazy('passbook_admin:users')
success_message = _('Successfully updated User')