diff --git a/device/templates/tabs/log.html b/device/templates/tabs/log.html index dea3bea..196fe98 100644 --- a/device/templates/tabs/log.html +++ b/device/templates/tabs/log.html @@ -12,17 +12,52 @@ {% for log in device_logs %} - - {{ log.date|date:"M j, Y, H:i" }} - {{ log.event }} - {{ log.user.get_full_name|default:log.user.username }} - + + {{ log.date|date:"M j, Y, H:i" }} + {{ log.event }} + {{ log.user.get_full_name|default:log.user.username }} + {% empty %} - - {% trans 'No logs recorded.' %} - + + {% trans 'No logs recorded.' %} + {% endfor %} + diff --git a/device/views.py b/device/views.py index e418c7b..a8468eb 100644 --- a/device/views.py +++ b/device/views.py @@ -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,