Add pagination to usage pages

This commit is contained in:
Tom Talbot 2014-07-22 16:30:10 +01:00
parent 2fde7c6310
commit 65883876af
6 changed files with 79 additions and 3 deletions

View file

@ -21,7 +21,7 @@
</tr>
</thead>
<tbody>
{% for page in document.used_by %}
{% for page in used_by %}
<tr>
<td class="title" valign="top">
<h2><a href="{% url 'wagtailadmin_pages_edit' page.id %}" title="{% trans 'Edit this page' %}">{{ page.title }}</a></h2>
@ -47,4 +47,17 @@
</table>
</section>
</div>
<div class="pagination">
{% if used_by.has_previous %}
<a href="?p={{ used_by.previous_page_number }}">previous</a>
{% endif %}
<span>
Page {{ used_by.number }} of {{ used_by.paginator.num_pages }}.
</span>
{% if used_by.has_next %}
<a href="?p={{ used_by.next_page_number }}">next</a>
{% endif %}
</div>
{% endblock %}

View file

@ -146,6 +146,18 @@ def delete(request, document_id):
def usage(request, document_id):
doc = get_object_or_404(Document, id=document_id)
# Pagination
p = request.GET.get('p', 1)
paginator = Paginator(doc.used_by, 20)
try:
used_by = paginator.page(p)
except PageNotAnInteger:
used_by = paginator.page(1)
except EmptyPage:
used_by = paginator.page(paginator.num_pages)
return render(request, "wagtaildocs/documents/usage.html", {
'document': doc,
'used_by': used_by
})

View file

@ -21,7 +21,7 @@
</tr>
</thead>
<tbody>
{% for page in image.used_by %}
{% for page in used_by %}
<tr>
<td class="title" valign="top">
<h2><a href="{% url 'wagtailadmin_pages_edit' page.id %}" title="{% trans 'Edit this page' %}">{{ page.title }}</a></h2>
@ -47,4 +47,17 @@
</table>
</section>
</div>
<div class="pagination">
{% if used_by.has_previous %}
<a href="?p={{ used_by.previous_page_number }}">previous</a>
{% endif %}
<span>
Page {{ used_by.number }} of {{ used_by.paginator.num_pages }}.
</span>
{% if used_by.has_next %}
<a href="?p={{ used_by.next_page_number }}">next</a>
{% endif %}
</div>
{% endblock %}

View file

@ -146,6 +146,18 @@ def add(request):
def usage(request, image_id):
image = get_object_or_404(get_image_model(), id=image_id)
# Pagination
p = request.GET.get('p', 1)
paginator = Paginator(image.used_by, 20)
try:
used_by = paginator.page(p)
except PageNotAnInteger:
used_by = paginator.page(1)
except EmptyPage:
used_by = paginator.page(paginator.num_pages)
return render(request, "wagtailimages/images/usage.html", {
'image': image,
'used_by': used_by
})

View file

@ -21,7 +21,7 @@
</tr>
</thead>
<tbody>
{% for page in instance.used_by %}
{% for page in used_by %}
<tr>
<td class="title" valign="top">
<h2><a href="{% url 'wagtailadmin_pages_edit' page.id %}" title="{% trans 'Edit this page' %}">{{ page.title }}</a></h2>
@ -47,5 +47,18 @@
</table>
</section>
</div>
<div class="pagination">
{% if used_by.has_previous %}
<a href="?p={{ used_by.previous_page_number }}">previous</a>
{% endif %}
<span>
Page {{ used_by.number }} of {{ used_by.paginator.num_pages }}.
</span>
{% if used_by.has_next %}
<a href="?p={{ used_by.next_page_number }}">next</a>
{% endif %}
</div>
{% endblock %}

View file

@ -8,6 +8,7 @@ from django.contrib.auth.decorators import permission_required
from django.core.exceptions import PermissionDenied
from django.utils.translation import ugettext as _
from django.core.urlresolvers import reverse
from django.core.paginator import Paginator, EmptyPage, PageNotAnInteger
from wagtail.wagtailadmin.edit_handlers import ObjectList, extract_panel_definitions_from_model_class
@ -222,6 +223,18 @@ def usage(request, content_type_app_name, content_type_model_name, id):
model = content_type.model_class()
instance = get_object_or_404(model, id=id)
# Pagination
p = request.GET.get('p', 1)
paginator = Paginator(instance.used_by(), 20)
try:
used_by = paginator.page(p)
except PageNotAnInteger:
used_by = paginator.page(1)
except EmptyPage:
used_by = paginator.page(paginator.num_pages)
return render(request, "wagtailsnippets/snippets/usage.html", {
'instance': instance,
'used_by': used_by
})