diff --git a/templates/tracker/issue_list.html b/templates/tracker/issue_list.html
index 43efe39..974c77b 100644
--- a/templates/tracker/issue_list.html
+++ b/templates/tracker/issue_list.html
@@ -2,6 +2,7 @@
{% load humanize %}
{% load tracker_tags %}
+{% load bootstrap3 %}
{% block title %}{{ issue.name }} - {{ project }} - PonyTracker{% endblock %}
@@ -82,7 +83,7 @@
- {% if issues.count %}
+ {% if paginator.count %}
{% for issue in issues %}
{% if issue.closed %}
@@ -107,4 +108,10 @@
{% endif %}
+{% if issues %}
+
+ {% bootstrap_pagination issues %}
+
+{% endif %}
+
{% endblock %}
diff --git a/tracker/views.py b/tracker/views.py
index 876cac6..4d96faa 100644
--- a/tracker/views.py
+++ b/tracker/views.py
@@ -5,6 +5,7 @@ from django.contrib.auth.decorators import login_required
from django.views.decorators.http import require_http_methods
from django.conf import settings
from django.core.urlresolvers import reverse
+from django.core.paginator import Paginator, PageNotAnInteger, EmptyPage
from django.http import HttpResponse
from django.db.models import Max
@@ -301,6 +302,16 @@ def issue_list(request, project):
issues = issues.annotate(last_activity=Max('events__date')).order_by('last_activity')
else: # recently-updated
issues = issues.annotate(last_activity=Max('events__date')).order_by('-last_activity')
+ page = request.GET.get('page')
+ paginator = Paginator(issues, settings.ITEMS_PER_PAGE)
+ try:
+ issues = paginator.page(page)
+ except PageNotAnInteger:
+ issues = paginator.page(1)
+ except EmptyPage:
+ issues = paginator.page(paginator.num_pages)
+ else:
+ paginator = None
if is_open == '' and is_close == '':
is_all = ' active'
@@ -311,6 +322,7 @@ def issue_list(request, project):
c = {
'project': project,
'issues': issues,
+ 'paginator': paginator,
'query': query,
'sort': sort,
'is_open': is_open,