Updated User management admin table
This commit is contained in:
parent
8ee3f561a4
commit
5d934469c2
|
@ -1,14 +1,64 @@
|
||||||
import django_tables2 as tables
|
import django_tables2 as tables
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.html import format_html
|
||||||
|
|
||||||
from idhub.models import Rol, Event
|
from idhub.models import Rol, Event
|
||||||
from idhub_auth.models import User
|
from idhub_auth.models import User
|
||||||
|
|
||||||
|
|
||||||
|
class ButtonColumn(tables.Column):
|
||||||
|
attrs = {
|
||||||
|
"a": {
|
||||||
|
"type": "button",
|
||||||
|
"class": "text-primary",
|
||||||
|
"title": "'View'",
|
||||||
|
}
|
||||||
|
}
|
||||||
|
# django_tables will only call the render function if it doesn't find
|
||||||
|
# any empty values in the data, so we stop it from matching the data
|
||||||
|
# to any value considered empty
|
||||||
|
empty_values = ()
|
||||||
|
|
||||||
|
def render(self):
|
||||||
|
return format_html('<i class="bi bi-eye"></i>')
|
||||||
|
|
||||||
|
|
||||||
class UserTable(tables.Table):
|
class UserTable(tables.Table):
|
||||||
|
view_user = ButtonColumn(
|
||||||
|
linkify={
|
||||||
|
"viewname": "idhub:admin_people",
|
||||||
|
"args": [tables.A("pk")]
|
||||||
|
},
|
||||||
|
orderable=False,
|
||||||
|
)
|
||||||
|
membership = tables.Column(empty_values=())
|
||||||
|
role = tables.Column(empty_values=())
|
||||||
|
|
||||||
|
def render_membership(self, record):
|
||||||
|
return record.get_memberships()
|
||||||
|
|
||||||
|
def order_membership(self, queryset, is_descending):
|
||||||
|
# TODO: Test that this doesn't return more rows than it should
|
||||||
|
queryset = queryset.order_by(
|
||||||
|
("-" if is_descending else "") + "memberships__type"
|
||||||
|
)
|
||||||
|
|
||||||
|
return (queryset, True)
|
||||||
|
|
||||||
|
def render_role(self, record):
|
||||||
|
return record.get_roles()
|
||||||
|
|
||||||
|
def order_role(self, queryset, is_descending):
|
||||||
|
queryset = queryset.order_by(
|
||||||
|
("-" if is_descending else "") + "roles"
|
||||||
|
)
|
||||||
|
|
||||||
|
return (queryset, True)
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
template_name = "idhub/custom_table.html"
|
template_name = "idhub/custom_table.html"
|
||||||
fields = ("first_name", "last_name", "email", "is_active", "is_admin")
|
fields = ("last_name", "first_name", "email", "membership", "role",
|
||||||
|
"view_user")
|
||||||
|
|
||||||
|
|
||||||
class RolesTable(tables.Table):
|
class RolesTable(tables.Table):
|
||||||
|
|
|
@ -32,7 +32,8 @@ from idhub.admin.forms import (
|
||||||
UserRolForm,
|
UserRolForm,
|
||||||
)
|
)
|
||||||
from idhub.admin.tables import (
|
from idhub.admin.tables import (
|
||||||
DashboardTable
|
DashboardTable,
|
||||||
|
UserTable
|
||||||
)
|
)
|
||||||
from idhub.models import (
|
from idhub.models import (
|
||||||
DID,
|
DID,
|
||||||
|
@ -82,10 +83,12 @@ class ImportExport(AdminView):
|
||||||
section = "ImportExport"
|
section = "ImportExport"
|
||||||
|
|
||||||
|
|
||||||
class PeopleListView(People, TemplateView):
|
class PeopleListView(People, SingleTableView):
|
||||||
template_name = "idhub/admin/people.html"
|
template_name = "idhub/admin/people.html"
|
||||||
subtitle = _('View users')
|
subtitle = _('View users')
|
||||||
icon = 'bi bi-person'
|
icon = 'bi bi-person'
|
||||||
|
table_class = UserTable
|
||||||
|
model = User
|
||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
|
@ -94,6 +97,11 @@ class PeopleListView(People, TemplateView):
|
||||||
})
|
})
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
def get_queryset(self, **kwargs):
|
||||||
|
queryset = super().get_queryset(**kwargs)
|
||||||
|
|
||||||
|
return queryset
|
||||||
|
|
||||||
|
|
||||||
class PeopleView(People, TemplateView):
|
class PeopleView(People, TemplateView):
|
||||||
template_name = "idhub/admin/user.html"
|
template_name = "idhub/admin/user.html"
|
||||||
|
|
|
@ -1,12 +1,14 @@
|
||||||
{% extends "idhub/base_admin.html" %}
|
{% extends "idhub/base_admin.html" %}
|
||||||
{% load i18n %}
|
{% load i18n %}
|
||||||
|
{% load render_table from django_tables2 %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
<h3>
|
<h3>
|
||||||
<i class="{{ icon }}"></i>
|
<i class="{{ icon }}"></i>
|
||||||
{{ subtitle }}
|
{{ subtitle }}
|
||||||
</h3>
|
</h3>
|
||||||
<div class="table-responsive">
|
{% render_table table %}
|
||||||
|
{% comment %}<div class="table-responsive">
|
||||||
<table class="table table-striped table-sm">
|
<table class="table table-striped table-sm">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
|
@ -35,5 +37,5 @@
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>{% endcomment %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
Loading…
Reference in New Issue