diff --git a/chrono/manager/templates/chrono/manager_agenda_settings.html b/chrono/manager/templates/chrono/manager_agenda_settings.html
index c4435c1a..56aa3e96 100644
--- a/chrono/manager/templates/chrono/manager_agenda_settings.html
+++ b/chrono/manager/templates/chrono/manager_agenda_settings.html
@@ -3,7 +3,11 @@
{% block breadcrumb %}
{{ block.super }}
+{% if desk %}
+{% trans "Settings" %}
+{% else %}
{% trans "Settings" %}
+{% endif %}
{% endblock %}
{% block appbar %}
@@ -144,7 +148,7 @@
{% if user_can_manage %}{% trans "remove" %}{% endif %}
{% endfor %}
{% if not desk.are_all_exceptions_displayed %}
-
({% trans 'see all exceptions' %})
+ ({% trans 'see all exceptions' %})
{% endif %}
{% trans 'Add a time period exception' %}
{% endif %}
diff --git a/chrono/manager/templates/chrono/manager_time_period_exception_list.html b/chrono/manager/templates/chrono/manager_time_period_exception_list.html
index d77e0824..1c934f72 100644
--- a/chrono/manager/templates/chrono/manager_time_period_exception_list.html
+++ b/chrono/manager/templates/chrono/manager_time_period_exception_list.html
@@ -1,4 +1,4 @@
-{% extends "chrono/manager_desk_form.html" %}
+{% extends "chrono/manager_agenda_settings.html" %}
{% load i18n %}
{% block extrascripts %}
@@ -8,9 +8,7 @@
{% block breadcrumb %}
{{ block.super }}
-{% if desk %}
-{{desk.label}}
-{% endif %}
+{% trans "All exceptions" %}
{% endblock %}
{% block appbar %}
@@ -26,5 +24,11 @@
{% endfor %}
+
+ {% if not page_obj %}
+ {% trans "Show more..." %}
+ {% endif %}
+
+ {% include "gadjo/pagination.html" %}
{% endblock %}
diff --git a/chrono/manager/urls.py b/chrono/manager/urls.py
index 367278a7..eba7a170 100644
--- a/chrono/manager/urls.py
+++ b/chrono/manager/urls.py
@@ -76,6 +76,8 @@ urlpatterns = [
name='chrono-manager-time-period-exception-edit'),
url(r'^time-period-exceptions/(?P\d+)/delete$', views.time_period_exception_delete,
name='chrono-manager-time-period-exception-delete'),
+ url(r'^time-period-exceptions/(?P\d+)/exception-extract-list$', views.time_period_exception_extract_list,
+ name='chrono-manager-time-period-exception-extract-list'),
url(r'^time-period-exceptions/(?P\d+)/exception-list$', views.time_period_exception_list,
name='chrono-manager-time-period-exception-list'),
diff --git a/chrono/manager/views.py b/chrono/manager/views.py
index 5962bcd5..53059fb8 100644
--- a/chrono/manager/views.py
+++ b/chrono/manager/views.py
@@ -747,6 +747,7 @@ time_period_exception_edit = TimePeriodExceptionEditView.as_view()
class TimePeriodExceptionListView(ManagedDeskMixin, ListView):
template_name = 'chrono/manager_time_period_exception_list.html'
model = TimePeriodException
+ paginate_by = 20
def get_queryset(self):
return self.model.objects.filter(desk=self.desk, end_datetime__gte=now())
@@ -760,6 +761,17 @@ class TimePeriodExceptionListView(ManagedDeskMixin, ListView):
time_period_exception_list = TimePeriodExceptionListView.as_view()
+class TimePeriodExceptionExtractListView(TimePeriodExceptionListView):
+ paginate_by = None # no pagination
+
+ def get_queryset(self):
+ # but limit queryset
+ return super(TimePeriodExceptionExtractListView, self).get_queryset()[:10]
+
+
+time_period_exception_extract_list = TimePeriodExceptionExtractListView.as_view()
+
+
class TimePeriodExceptionDeleteView(ManagedDeskSubobjectMixin, DeleteView):
template_name = 'chrono/manager_confirm_delete.html'
model = TimePeriodException
diff --git a/tests/test_manager.py b/tests/test_manager.py
index 86498107..e0333f6f 100644
--- a/tests/test_manager.py
+++ b/tests/test_manager.py
@@ -926,7 +926,7 @@ def test_meetings_agenda_add_time_period_exception(app, admin_user):
assert TimePeriodException.objects.count() == 2
assert 'Exception 1' in resp.text
assert 'Exception 2' not in resp.text
- resp = resp.click(href="/manage/time-period-exceptions/%d/exception-list" % agenda.desk_set.first().pk)
+ resp = resp.click(href="/manage/time-period-exceptions/%d/exception-extract-list" % agenda.desk_set.first().pk)
assert 'Exception 1' in resp.text
assert 'Exception 2' in resp.text
@@ -1057,6 +1057,11 @@ def test_exception_list(app, admin_user):
assert '/manage/time-period-exceptions/%d/edit' % current_exception.pk in resp.text
assert '/manage/time-period-exceptions/%d/edit' % future_exception.pk in resp.text
+ resp = resp.click(href="/manage/time-period-exceptions/%d/exception-extract-list" % desk.pk)
+ assert '/manage/time-period-exceptions/%d/edit' % past_exception.pk not in resp.text
+ assert '/manage/time-period-exceptions/%d/edit' % current_exception.pk in resp.text
+ assert '/manage/time-period-exceptions/%d/edit' % future_exception.pk in resp.text
+
resp = resp.click(href="/manage/time-period-exceptions/%d/exception-list" % desk.pk)
assert '/manage/time-period-exceptions/%d/edit' % past_exception.pk not in resp.text
assert '/manage/time-period-exceptions/%d/edit' % current_exception.pk in resp.text