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: