diff --git a/logs/templates/paging.html b/logs/templates/paging.html new file mode 100644 index 0000000..2cf8f48 --- /dev/null +++ b/logs/templates/paging.html @@ -0,0 +1,12 @@ +<center> + {% if page > 1 %} + <a href="{% url 'showlogspage' page|add:"-1" %}">←</a> + {% else %} + + {% endif %} + {% if has_next_page %} + <a href="{% url 'showlogspage' page|add:"1" %}">→</a> + {% else %} + + {% endif %} +</center> diff --git a/logs/templates/showlogs.html b/logs/templates/showlogs.html index 1aa98da..13d0e34 100644 --- a/logs/templates/showlogs.html +++ b/logs/templates/showlogs.html @@ -22,31 +22,33 @@ </div> </div> {% else %} + {% include "paging.html" %} <div class="table-responsive"> <table class="table table-bordered table-hover"> <thead> <tr> <th>#</th> + <th>{% trans "Date" %}</th> <th>{% trans "User" %}</th> <th>{% trans "Instance" %}</th> <th>{% trans "Message" %}</th> - <th>{% trans "Date" %}</th> </tr> </thead> <tbody> {% for log in logs %} <tr> - <td>{{ forloop.counter }}</td> + <td>{{ log.id }}</td> + <td style="width:130px;">{{ log.date|date:"M d H:i:s" }}</td> <td>{{ log.user }}</a></td> <td>{{ log.instance }}</a></td> <td>{{ log.message }}</td> - <td style="width:130px;">{{ log.date|date:"M d H:i:s" }}</td> </tr> {% endfor %} </tbody> </table> </div> + {% include "paging.html" %} {% endif %} </div> </div> -{% endblock %} \ No newline at end of file +{% endblock %} diff --git a/logs/urls.py b/logs/urls.py new file mode 100644 index 0000000..e579387 --- /dev/null +++ b/logs/urls.py @@ -0,0 +1,7 @@ +from django.conf.urls import url +from . import views + +urlpatterns = [ + url(r'^$', views.showlogs, name='showlogs'), + url(r'^(?P<page>[0-9]+)/$', views.showlogs, name='showlogspage'), +] diff --git a/logs/views.py b/logs/views.py index cb408ca..830925e 100644 --- a/logs/views.py +++ b/logs/views.py @@ -2,6 +2,7 @@ from django.shortcuts import render from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse from logs.models import Logs +from django.conf import settings def addlogmsg(user, instance, message): @@ -13,7 +14,7 @@ def addlogmsg(user, instance, message): add_log_msg.save() -def showlogs(request): +def showlogs(request, page=1): """ :param request: :return: @@ -25,6 +26,11 @@ def showlogs(request): if not request.user.is_superuser: return HttpResponseRedirect(reverse('index')) - logs = Logs.objects.all() + page = int(page) + limit_from = (page-1)*settings.LOGS_PER_PAGE + limit_to = page*settings.LOGS_PER_PAGE + logs = Logs.objects.all().order_by('-date')[limit_from:limit_to+1] + has_next_page = logs.count() > settings.LOGS_PER_PAGE + # TODO: remove last element from queryset, but do not affect database return render(request, 'showlogs.html', locals()) diff --git a/webvirtcloud/settings.py b/webvirtcloud/settings.py index 2b70b02..9181cf6 100644 --- a/webvirtcloud/settings.py +++ b/webvirtcloud/settings.py @@ -114,3 +114,4 @@ LIBVIRT_KEEPALIVE_COUNT = 5 ALLOW_INSTANCE_MULTIPLE_OWNER = True CLONE_INSTANCE_DEFAULT_PREFIX = 'ourea' +LOGS_PER_PAGE = 100 diff --git a/webvirtcloud/urls.py b/webvirtcloud/urls.py index 2acb208..6cb32e7 100644 --- a/webvirtcloud/urls.py +++ b/webvirtcloud/urls.py @@ -8,6 +8,7 @@ urlpatterns = patterns('', url(r'^instance/', include('instances.urls')), url(r'^accounts/', include('accounts.urls')), url(r'^computes/', include('computes.urls')), + url(r'^logs/', include('logs.urls')), url(r'^compute/(?P<compute_id>[0-9]+)/storages/$', 'storages.views.storages', name='storages'), @@ -27,6 +28,5 @@ urlpatterns = patterns('', 'create.views.create_instance', name='create_instance'), url(r'^console/$', 'console.views.console', name='console'), - url(r'^logs/$', 'logs.views.showlogs', name='showlogs'), # (r'^admin/', include(admin.site.urls)), )