Added pagination and column sorting to the admin dashboard, User, and Roles tables
This commit is contained in:
parent
b279ab94d6
commit
4efe97d6e4
|
@ -0,0 +1,24 @@
|
|||
import django_tables2 as tables
|
||||
from idhub.models import Rol, Event
|
||||
from idhub_auth.models import User
|
||||
|
||||
|
||||
class UserTable(tables.Table):
|
||||
class Meta:
|
||||
model = User
|
||||
template_name = "idhub/custom_table.html"
|
||||
fields = ("first_name", "last_name", "email", "is_active", "is_admin")
|
||||
|
||||
|
||||
class RolesTable(tables.Table):
|
||||
class Meta:
|
||||
model = Rol
|
||||
template_name = "idhub/custom_table.html"
|
||||
fields = ("name", "description")
|
||||
|
||||
|
||||
class DashboardTable(tables.Table):
|
||||
class Meta:
|
||||
model = Event
|
||||
template_name = "idhub/custom_table.html"
|
||||
fields = ("type", "message", "created")
|
|
@ -5,6 +5,7 @@ import pandas as pd
|
|||
from pathlib import Path
|
||||
from jsonschema import validate
|
||||
from smtplib import SMTPException
|
||||
from django_tables2 import SingleTableView
|
||||
|
||||
from django.conf import settings
|
||||
from django.utils.translation import gettext_lazy as _
|
||||
|
@ -30,6 +31,11 @@ from idhub.admin.forms import (
|
|||
SchemaForm,
|
||||
UserRolForm,
|
||||
)
|
||||
from idhub.admin.tables import (
|
||||
UserTable,
|
||||
DashboardTable,
|
||||
RolesTable
|
||||
)
|
||||
from idhub.models import (
|
||||
DID,
|
||||
Event,
|
||||
|
@ -43,19 +49,15 @@ from idhub.models import (
|
|||
)
|
||||
|
||||
|
||||
class DashboardView(AdminView, TemplateView):
|
||||
class DashboardView(AdminView, SingleTableView):
|
||||
template_name = "idhub/admin/dashboard.html"
|
||||
table_class = DashboardTable
|
||||
title = _('Dashboard')
|
||||
subtitle = _('Events')
|
||||
icon = 'bi bi-bell'
|
||||
section = "Home"
|
||||
model = Event
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context.update({
|
||||
'events': Event.objects.filter(user=None),
|
||||
})
|
||||
return context
|
||||
|
||||
class People(AdminView):
|
||||
title = _("User management")
|
||||
|
@ -82,10 +84,12 @@ class ImportExport(AdminView):
|
|||
section = "ImportExport"
|
||||
|
||||
|
||||
class PeopleListView(People, TemplateView):
|
||||
class PeopleListView(People, SingleTableView):
|
||||
template_name = "idhub/admin/people.html"
|
||||
subtitle = _('View users')
|
||||
icon = 'bi bi-person'
|
||||
table_class = UserTable
|
||||
model = User
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
|
@ -402,13 +406,16 @@ class RolesView(AccessControl):
|
|||
template_name = "idhub/admin/roles.html"
|
||||
subtitle = _('Manage roles')
|
||||
icon = ''
|
||||
table_class = RolesTable
|
||||
model = Rol
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super().get_context_data(**kwargs)
|
||||
context.update({
|
||||
'roles': Rol.objects,
|
||||
})
|
||||
return context
|
||||
queryset = kwargs.pop('object_list', None)
|
||||
if queryset is None:
|
||||
self.object_list = self.model.objects.all()
|
||||
|
||||
return super().get_context_data(**kwargs)
|
||||
|
||||
|
||||
class RolRegisterView(AccessControl, CreateView):
|
||||
template_name = "idhub/admin/rol_register.html"
|
||||
|
|
|
@ -1,29 +1,11 @@
|
|||
{% extends "idhub/base_admin.html" %}
|
||||
{% load i18n %}
|
||||
{% load render_table from django_tables2 %}
|
||||
|
||||
{% block content %}
|
||||
<h3>
|
||||
<i class="{{ icon }}"></i>
|
||||
{{ subtitle }}
|
||||
</h3>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Event' %}</button></th>
|
||||
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Description' %}</button></th>
|
||||
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Date' %}</button></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for ev in events %}
|
||||
<tr>
|
||||
<td>{{ ev.get_type_name }}</td>
|
||||
<td>{{ ev.message }}</td>
|
||||
<td>{{ ev.created }}</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% render_table table %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,39 +1,11 @@
|
|||
{% extends "idhub/base_admin.html" %}
|
||||
{% load i18n %}
|
||||
{% load render_table from django_tables2 %}
|
||||
|
||||
{% block content %}
|
||||
<h3>
|
||||
<i class="{{ icon }}"></i>
|
||||
{{ subtitle }}
|
||||
</h3>
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col"><button type="button" class="btn btn-green-admin border border-dark">{% trans 'Last name' %}</button></th>
|
||||
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'First name' %}</button></th>
|
||||
<th scope="col"><button type="button" class="btn btn-grey border border-dark">Email</button></th>
|
||||
<th scope="col" class="text-center"><button type="button" class="btn btn-grey border border-dark">{% trans 'Membership' %}</button></th>
|
||||
<th scope="col" class="text-center"><button type="button" class="btn btn-grey border border-dark">{% trans 'Role' %}</button></th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for user in users %}
|
||||
<tr>
|
||||
<td>{{ user.last_name|default:'' }}</td>
|
||||
<td>{{ user.first_name|default:'' }}</td>
|
||||
<td>{{ user.email }}</td>
|
||||
<td class="text-center">
|
||||
{{ user.get_memberships }}
|
||||
</td>
|
||||
<td class="text-center">
|
||||
{{ user.get_roles }}
|
||||
</td>
|
||||
<td><a type="button" class="text-primary" href="{% url 'idhub:admin_people' user.id %}" title="{% trans 'View' %}"><i class="bi bi-eye"></i></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% render_table table %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -1,38 +1,11 @@
|
|||
{% extends "idhub/base_admin.html" %}
|
||||
{% load i18n %}
|
||||
{% load render_table from django_tables2 %}
|
||||
|
||||
{% block content %}
|
||||
<h3>
|
||||
<i class="{{ icon }}"></i>
|
||||
{{ subtitle }}
|
||||
</h3>
|
||||
<div class="row mt-5">
|
||||
<div class="col">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped table-sm">
|
||||
<thead>
|
||||
<tr>
|
||||
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Role' %}</button></th>
|
||||
<th scope="col"><button type="button" class="btn btn-grey border border-dark">{% trans 'Description' %}</button></th>
|
||||
<th scope="col"></th>
|
||||
<th scope="col"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for rol in roles.all %}
|
||||
<tr>
|
||||
<td>{{ rol.name }}</td>
|
||||
<td>{{ rol.description|default:""}}</td>
|
||||
<td><a href="{% url 'idhub:admin_rol_edit' rol.id %}" title="{% trans 'Edit' %}"><i class="bi bi-pencil-square"></i></a></td>
|
||||
<td><a href="{% url 'idhub:admin_rol_del' rol.id %}" title="{% trans 'Delete' %}"><i class="bi bi-trash"></i></a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
<div class="form-actions-no-box">
|
||||
<a class="btn btn-green-admin" href="{% url 'idhub:admin_rol_new' %}">{% translate "Add Role" %} <i class="bi bi-plus"></i></a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% render_table table %}
|
||||
{% endblock %}
|
||||
|
|
|
@ -70,6 +70,7 @@ INSTALLED_APPS = [
|
|||
'django.contrib.staticfiles',
|
||||
'django_extensions',
|
||||
'django_bootstrap5',
|
||||
'django_tables',
|
||||
'idhub_auth',
|
||||
'idhub'
|
||||
]
|
||||
|
|
Loading…
Reference in New Issue