Adds pagination, as per Issue #82.

Thanks to Christian Klein for the patch.
This commit is contained in:
Ross Poulton 2009-07-21 10:29:23 +00:00
parent 21d38604cf
commit df30fe9e2a
2 changed files with 34 additions and 2 deletions

View File

@ -131,7 +131,7 @@ $(document).ready(function() {
<table width='100%'>
<tr class='row_tablehead'><td colspan='8'>{% trans "Tickets" %}</td></tr>
<tr class='row_columnheads'><th>#</th><th>&nbsp;</th><th>{% trans "Pr" %}</th><th>{% trans "Title" %}</th><th>{% trans "Queue" %}</th><th>{% trans "Status" %}</th><th>{% trans "Created" %}</th><th>{% trans "Owner" %}</th></tr>
{% if tickets %}{% for ticket in tickets %}
{% if tickets %}{% for ticket in tickets.object_list %}
<tr class='row_{% cycle odd,even %} row_hover'>
<th><a href='{{ ticket.get_absolute_url }}'>{{ ticket.ticket }}</a></th>
<td><input type='checkbox' name='ticket_id' value='{{ ticket.id }}' class='ticket_multi_select' /></td>
@ -146,6 +146,21 @@ $(document).ready(function() {
<tr class='row_odd'><td colspan='5'>{% trans "No Tickets Match Your Selection" %}</td></tr>
{% endif %}
</table>
<div class="pagination">
<span class="step-links">
{% if tickets.has_previous %}
<a href="?{{ query_string }}{% if query_string %}&{% else %}?{% endif %}page={{ tickets.previous_page_number }}">{% trans "Previous" %}</a>
{% endif %}
<span class="current">
{% blocktrans with tickets.number as ticket_num and tickets.paginator.num_pages as num_pages %}Page {{ ticket_num }} of {{ num_pages }}.{% endblocktrans %}
</span>
{% if tickets.has_next %}
<a href="?{{ query_string }}{% if query_string %}&{% else %}?{% endif %}page={{ tickets.next_page_number }}">{% trans "Next" %}</a>
{% endif %}
</span>
</div>
<p><label>Select: </label> <a href='#select_all' id='select_all'>All</a> <a href='#select_none' id='select_none'>None</a> <a href='#select_inverse' id='select_inverse'>Inverse</a></p>

View File

@ -14,6 +14,7 @@ from django.contrib.auth.models import User
from django.contrib.auth.decorators import login_required, user_passes_test
from django.core.files.base import ContentFile
from django.core.urlresolvers import reverse
from django.core.paginator import Paginator
from django.db import connection
from django.db.models import Q
from django.http import HttpResponseRedirect, Http404, HttpResponse
@ -493,7 +494,17 @@ def ticket_list(request):
sortreverse = request.GET.get('sortreverse', None)
query_params['sortreverse'] = sortreverse
tickets = apply_query(Ticket.objects.select_related(), query_params)
ticket_qs = apply_query(Ticket.objects.select_related(), query_params)
paginator = Paginator(ticket_qs, 20)
try:
page = int(request.GET.get('page', '1'))
except ValueError:
page = 1
try:
tickets = paginator.page(page)
except (EmptyPage, InvalidPage):
tickets = paginator.page(paginator.num_pages)
search_message = ''
if context.has_key('query') and settings.DATABASE_ENGINE.startswith('sqlite'):
@ -506,9 +517,15 @@ def ticket_list(request):
user_saved_queries = SavedSearch.objects.filter(Q(user=request.user) | Q(shared__exact=True))
query_string = []
for get_key, get_value in request.GET.iteritems():
if get_key != "page":
query_string.append("%s=%s" % (get_key, get_value))
return render_to_response('helpdesk/ticket_list.html',
RequestContext(request, dict(
context,
query_string="&".join(query_string),
tickets=tickets,
user_choices=User.objects.filter(is_active=True),
queue_choices=Queue.objects.all(),