added log pagination

This commit is contained in:
Thomas Nahuel Rusiecki 2025-02-11 13:42:26 -03:00
parent d6f20f37fd
commit 65d5b48a2e
2 changed files with 58 additions and 10 deletions

View file

@ -12,17 +12,52 @@
</thead>
<tbody>
{% for log in device_logs %}
<tr>
<td width="13%">{{ log.date|date:"M j, Y, H:i" }}</td>
<td class="fst-italic">{{ log.event }}</td>
<td>{{ log.user.get_full_name|default:log.user.username }}</td>
</tr>
<tr>
<td width="13%">{{ log.date|date:"M j, Y, H:i" }}</td>
<td class="fst-italic">{{ log.event }}</td>
<td>{{ log.user.get_full_name|default:log.user.username }}</td>
</tr>
{% empty %}
<tr>
<td colspan="3" class="text-center">{% trans 'No logs recorded.' %}</td>
</tr>
<tr>
<td colspan="3" class="text-center">{% trans 'No logs recorded.' %}</td>
</tr>
{% endfor %}
</tbody>
</table>
</div>
<nav aria-label="Page navigation">
<ul class="pagination justify-content-center">
{% if device_logs.has_previous %}
<li class="page-item">
<a class="page-link" href="?page=1" aria-label="First">
<span aria-hidden="true">&laquo; First</span>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ device_logs.previous_page_number }}" aria-label="Previous">
<span aria-hidden="true">&lsaquo; Previous</span>
</a>
</li>
{% endif %}
<li class="page-item active">
<span class="page-link">
Page {{ device_logs.number }} of {{ device_logs.paginator.num_pages }}
</span>
</li>
{% if device_logs.has_next %}
<li class="page-item">
<a class="page-link" href="?page={{ device_logs.next_page_number }}" aria-label="Next">
<span aria-hidden="true">Next &rsaquo;</span>
</a>
</li>
<li class="page-item">
<a class="page-link" href="?page={{ device_logs.paginator.num_pages }}" aria-label="Last">
<span aria-hidden="true">Last &raquo;</span>
</a>
</li>
{% endif %}
</ul>
</nav>
</div>

View file

@ -5,6 +5,7 @@ from django.http import JsonResponse
from django.conf import settings
from django.db import IntegrityError
from django.urls import reverse_lazy
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from django.contrib import messages
from django.shortcuts import get_object_or_404, redirect, Http404
from django.utils.translation import gettext_lazy as _
@ -104,9 +105,21 @@ class DetailsView(DashboardView, TemplateView):
institution=self.request.user.institution
).order_by('order')
device_states = State.objects.filter(snapshot_uuid__in=uuids).order_by('-date')
device_logs = DeviceLog.objects.filter(
snapshot_uuid__in=uuids).order_by('-date')
device_notes = Note.objects.filter(snapshot_uuid__in=uuids).order_by('-date')
# Paginate device_logs
# TODO: when clicking pagination button, it reloads the page on the details tab, instead of the log one
device_logs_list = DeviceLog.objects.filter(snapshot_uuid__in=uuids).order_by('-date')
paginator = Paginator(device_logs_list, 10) # Show last 10 logs
page = self.request.GET.get('page')
try:
device_logs = paginator.page(page)
except PageNotAnInteger:
device_logs = paginator.page(1)
except EmptyPage:
device_logs = paginator.page(paginator.num_pages)
context.update({
'object': self.object,
'snapshot': last_evidence,