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"