diff --git a/src/agenda_culturel/templates/agenda_culturel/contactmessages.html b/src/agenda_culturel/templates/agenda_culturel/contactmessages.html
index e0add62..1d02183 100644
--- a/src/agenda_culturel/templates/agenda_culturel/contactmessages.html
+++ b/src/agenda_culturel/templates/agenda_culturel/contactmessages.html
@@ -39,21 +39,7 @@
diff --git a/src/agenda_culturel/templates/agenda_culturel/moderation.html b/src/agenda_culturel/templates/agenda_culturel/moderation.html
index 16e4310..2909cf1 100644
--- a/src/agenda_culturel/templates/agenda_culturel/moderation.html
+++ b/src/agenda_culturel/templates/agenda_culturel/moderation.html
@@ -25,21 +25,7 @@
{% endfor %}
diff --git a/src/agenda_culturel/templates/agenda_culturel/search.html b/src/agenda_culturel/templates/agenda_culturel/search.html
index 47af397..b468b31 100644
--- a/src/agenda_culturel/templates/agenda_culturel/search.html
+++ b/src/agenda_culturel/templates/agenda_culturel/search.html
@@ -37,25 +37,9 @@
{% endfor %}
- {% if paginator_filter.paginator.num_pages != 1 %}
-
- {% endif %}
+
{% endif %}
diff --git a/src/agenda_culturel/views.py b/src/agenda_culturel/views.py
index ce5db8a..021dd3f 100644
--- a/src/agenda_culturel/views.py
+++ b/src/agenda_culturel/views.py
@@ -71,11 +71,50 @@ from .celery import (
run_all_recurrent_imports,
)
+import urllib
import logging
logger = logging.getLogger(__name__)
+class PaginatorFilter(Paginator):
+
+ def __init__(self, filter, nb, request):
+ self.request = request
+ self.filter = filter
+
+ super().__init__(filter.qs, nb)
+
+ self.url_first_page = PaginatorFilter.update_param(self.request.get_full_path(), 'page', 1)
+ self.url_last_page = PaginatorFilter.update_param(self.request.get_full_path(), 'page', self.num_pages)
+
+ def update_param(params, key, value):
+ p = params.split('?')
+ root = p[0]
+ if len(p) > 1:
+ other = p[1]
+ others = other.split('&')
+ others = [o for o in others if not o.startswith(key)]
+ others += [key + '=' + str(value)]
+ return root + '?' + '&'.join(others)
+ else:
+ return root + '?' + key + '=' + str(value)
+
+ def page(self, *args, **kwargs):
+ page = super().page(*args, **kwargs)
+
+ try:
+ page.url_previous_page = PaginatorFilter.update_param(self.request.get_full_path(), 'page', page.previous_page_number())
+ except EmptyPage:
+ page.url_previous_page = self.request.get_full_path()
+
+ try:
+ page.url_next_page = PaginatorFilter.update_param(self.request.get_full_path(), 'page', page.next_page_number())
+ except EmptyPage:
+ page.url_next_page = self.request.get_full_path()
+
+
+ return page
#
#
# Useful for translation
@@ -701,7 +740,7 @@ def moderation(request):
filter = EventFilterAdmin(
request.GET, queryset=Event.objects.all().order_by("-created_date")
)
- paginator = Paginator(filter.qs, 10)
+ paginator = PaginatorFilter(filter, 10, request)
page = request.GET.get("page")
try:
@@ -724,7 +763,7 @@ def contactmessages(request):
filter = ContactMessagesFilterAdmin(
request.GET, queryset=ContactMessage.objects.all().order_by("-date")
)
- paginator = Paginator(filter.qs, 10)
+ paginator = PaginatorFilter(filter, 10, request)
page = request.GET.get("page")
try:
@@ -849,7 +888,7 @@ def event_search(request, full=False):
request=request,
)
- paginator = Paginator(filter.qs, 10)
+ paginator = PaginatorFilter(filter, 10, request)
page = request.GET.get("page")
try: