diff --git a/core/templates/core/macros.jinja b/core/templates/core/macros.jinja
index 36b9ed05..d9dd68c2 100644
--- a/core/templates/core/macros.jinja
+++ b/core/templates/core/macros.jinja
@@ -114,22 +114,24 @@
{% endmacro %}
{% macro paginate(page_obj, paginator) %}
+ {% if page_obj.has_previous() or page_obj.has_next() %}
{% if page_obj.has_previous() %}
{% trans %}Previous{% endtrans %}
{% else %}
{% trans %}Previous{% endtrans %}
{% endif %}
- {% for i in paginator.page_range %}
- {% if page_obj.number == i %}
- {{ i }} ({% trans %}current{% endtrans %})
+ {% for i in paginator.page_range %}
+ {% if page_obj.number == i %}
+ {{ i }} ({% trans %}current{% endtrans %})
+ {% else %}
+ {{ i }}
+ {% endif %}
+ {% endfor %}
+ {% if page_obj.has_next() %}
+ {% trans %}Next{% endtrans %}
{% else %}
- {{ i }}
+ {% trans %}Next{% endtrans %}
{% endif %}
- {% endfor %}
- {% if page_obj.has_next() %}
- {% trans %}Next{% endtrans %}
- {% else %}
- {% trans %}Next{% endtrans %}
{% endif %}
{% endmacro %}
diff --git a/sas/templates/sas/album.jinja b/sas/templates/sas/album.jinja
index 38cd2431..6958adc6 100644
--- a/sas/templates/sas/album.jinja
+++ b/sas/templates/sas/album.jinja
@@ -1,4 +1,5 @@
{% extends "core/base.jinja" %}
+{% from "core/macros.jinja" import paginate %}
{% block title %}
{% trans %}SAS{% endtrans %}
@@ -62,7 +63,7 @@
{% endfor %}
- {% for p in album.children_pictures.order_by('id') %}
+ {% for p in pictures %}
{% if edit_mode %}
@@ -77,6 +78,8 @@
{% endfor %}
+
+ {{ paginate(pictures, paginator) }}
{% if edit_mode %}
{% endif %}
diff --git a/sas/views.py b/sas/views.py
index 859b4a7f..6cbdc319 100644
--- a/sas/views.py
+++ b/sas/views.py
@@ -23,7 +23,7 @@
#
from django.shortcuts import redirect
-from django.http import HttpResponse
+from django.http import HttpResponse, Http404
from django.core.urlresolvers import reverse_lazy, reverse
from core.views.forms import SelectDate
from django.views.generic import DetailView, TemplateView
@@ -32,6 +32,7 @@ from django.utils.translation import ugettext_lazy as _
from django.conf import settings
from django import forms
from django.core.exceptions import PermissionDenied
+from django.core.paginator import Paginator, InvalidPage
from ajax_select import make_ajax_field
from ajax_select.fields import AutoCompleteSelectMultipleField
@@ -252,6 +253,14 @@ class AlbumView(CanViewMixin, DetailView, FormMixin):
form_class = SASForm
pk_url_kwarg = "album_id"
template_name = "sas/album.jinja"
+ paginate_by = settings.SITH_SAS_IMAGES_PER_PAGE
+
+ def dispatch(self, request, *args, **kwargs):
+ try:
+ self.asked_page = int(request.GET.get("page", 1))
+ except ValueError:
+ raise Http404
+ return super(AlbumView, self).dispatch(request, *args, **kwargs)
def get(self, request, *args, **kwargs):
self.form = self.get_form()
@@ -291,6 +300,13 @@ class AlbumView(CanViewMixin, DetailView, FormMixin):
def get_context_data(self, **kwargs):
kwargs = super(AlbumView, self).get_context_data(**kwargs)
+ kwargs["paginator"] = Paginator(
+ self.object.children_pictures.order_by("id"), self.paginate_by
+ )
+ try:
+ kwargs["pictures"] = kwargs["paginator"].page(self.asked_page)
+ except InvalidPage:
+ raise Http404
kwargs["form"] = self.form
kwargs["clipboard"] = SithFile.objects.filter(
id__in=self.request.session["clipboard"]
diff --git a/sith/settings.py b/sith/settings.py
index 33c45087..50f95924 100644
--- a/sith/settings.py
+++ b/sith/settings.py
@@ -338,6 +338,7 @@ SITH_FORUM_PAGE_LENGTH = 30
# SAS variables
SITH_SAS_ROOT_DIR_ID = 4
+SITH_SAS_IMAGES_PER_PAGE = 30
SITH_BOARD_SUFFIX = "-bureau"
SITH_MEMBER_SUFFIX = "-membres"