rebuild pagination for search results
authorcavaliet
Thu, 14 Feb 2013 18:00:30 +0100
changeset 41 92e530850200
parent 40 599b9b82c750
child 42 277ebc746baf
rebuild pagination for search results
src/egonomy/templates/egonomy_all_pictures.html
src/egonomy/templates/partial/all_pictures_pagination.html
src/egonomy/templatetags/navigation.py
src/egonomy/views.py
--- a/src/egonomy/templates/egonomy_all_pictures.html	Thu Feb 14 16:40:41 2013 +0100
+++ b/src/egonomy/templates/egonomy_all_pictures.html	Thu Feb 14 18:00:30 2013 +0100
@@ -19,7 +19,7 @@
 		             {% else %}
 		                <h2>{% trans "All pictures" %}</h2> 
 		             {% endif %}
-						{% if nb_pages > 1 %}<p>{% build_pagination nb_pages cur_page_nb "all_pictures" "contents_page clickable" %}</p>{% endif %}
+						{% if nb_pages > 1 %}<p>{% build_pagination nb_pages cur_page_nb url_pagination "contents_page clickable" %}</p>{% endif %}
                         <ul class="fullwidth">
                           {% for img in results %}
                             <li class="subcol subcol-eighth">
@@ -50,7 +50,7 @@
                             </li>   
                           {% endfor %}
                         </ul>
-                        {% if nb_pages > 1 %}<p>{% build_pagination nb_pages cur_page_nb "all_pictures" "contents_page clickable" %}</p>{% endif %}
+                        {% if nb_pages > 1 %}<p>{% build_pagination nb_pages cur_page_nb url_pagination "contents_page clickable" %}</p>{% endif %}
                     </div>
                 </div>
 {% endblock %}
--- a/src/egonomy/templates/partial/all_pictures_pagination.html	Thu Feb 14 16:40:41 2013 +0100
+++ b/src/egonomy/templates/partial/all_pictures_pagination.html	Thu Feb 14 18:00:30 2013 +0100
@@ -1,21 +1,21 @@
 {% if nb_pages %}
 	{% comment %}alors ? : {{begin}} - {{middle}} - {{end}} - nb_pages = {{nb_pages}}<br/>
 	alors ? : nb_pages = {{nb_pages}} - range = {{nb_pages}} - cur_page_nb = {{cur_page_nb}}<br/>{% endcomment %}
-	{% if 1 < cur_page_nb %}<a class="{{a_class}}" alt="prev" href="{% url url_to %}?page={{cur_page_nb|add:'-1'}}">&lt;&lt;</a>&nbsp;{% endif %}
+	{% if 1 < cur_page_nb %}<a class="{{a_class}}" alt="prev" href="{{ url_pagination }}&page={{cur_page_nb|add:'-1'}}">&lt;&lt;</a>&nbsp;{% endif %}
 	{% for i in begin %}
-	  {% if i == cur_page_nb %}{{i}}{% else %}<a class="{{a_class}}" alt="{{i}}" href="{% url url_to %}?page={{i}}">{{i}}</a>{% endif %}&nbsp;
+	  {% if i == cur_page_nb %}{{i}}{% else %}<a class="{{a_class}}" alt="{{i}}" href="{{ url_pagination }}&page={{i}}">{{i}}</a>{% endif %}&nbsp;
 	{% endfor %}
 	{% if middle %}
 	...
 	{% for i in middle %}
-	  {% if i == cur_page_nb %}{{i}}{% else %}<a class="{{a_class}}" alt="{{i}}" href="{% url url_to %}?page={{i}}">{{i}}</a>{% endif %}&nbsp;
+	  {% if i == cur_page_nb %}{{i}}{% else %}<a class="{{a_class}}" alt="{{i}}" href="{{ url_pagination }}&page={{i}}">{{i}}</a>{% endif %}&nbsp;
 	{% endfor %}
 	{% endif %}
 	{% if end %}
     ...
     {% for i in end %}
-      {% if i == cur_page_nb %}{{i}}{% else %}<a class="{{a_class}}" alt="{{i}}" href="{% url url_to %}?page={{i}}">{{i}}</a>{% endif %}&nbsp;
+      {% if i == cur_page_nb %}{{i}}{% else %}<a class="{{a_class}}" alt="{{i}}" href="{{ url_pagination }}&page={{i}}">{{i}}</a>{% endif %}&nbsp;
     {% endfor %}
     {% endif %}
-	{% if cur_page_nb < nb_pages %}<a class="{{a_class}}" alt="next" href="{% url url_to %}?page={{cur_page_nb|add:'1'}}">&gt;&gt;</a>{% endif %}
+	{% if cur_page_nb < nb_pages %}<a class="{{a_class}}" alt="next" href="{{ url_pagination }}&page={{cur_page_nb|add:'1'}}">&gt;&gt;</a>{% endif %}
 {% endif %}
\ No newline at end of file
--- a/src/egonomy/templatetags/navigation.py	Thu Feb 14 16:40:41 2013 +0100
+++ b/src/egonomy/templatetags/navigation.py	Thu Feb 14 18:00:30 2013 +0100
@@ -20,7 +20,7 @@
 
 
 @register.inclusion_tag("partial/all_pictures_pagination.html", takes_context=True)
-def build_pagination(context, nb_pages, cur_page_nb, url_to, a_class, begin_pages=2, end_pages=2, before_current_pages=2, after_current_pages=2):
+def build_pagination(context, nb_pages, cur_page_nb, url_pagination, a_class, begin_pages=2, end_pages=2, before_current_pages=2, after_current_pages=2):
     # Digg-like pagination. Adapted from http://djangosnippets.org/snippets/2199/
     nb_pages = int(nb_pages)
     cur_page_nb = int(cur_page_nb)
@@ -66,12 +66,16 @@
         
     #assert False, str(nb_pages) + ", " + str(page_range) + ", " + str(begin)
     
+    # We control if url_pagination has at least "?"
+    if not "?" in url_pagination:
+        url_pagination = url_pagination + "?"
+    
     context.update({'begin' : begin,
                     'middle' : middle,
                     'end' : end,
                     'nb_pages' : nb_pages,
                     'cur_page_nb' : cur_page_nb,
-                    'url_to' : url_to,
+                    'url_pagination' : url_pagination,
                     'a_class' : a_class})
     #assert False, begin + middle + end
     return context
--- a/src/egonomy/views.py	Thu Feb 14 16:40:41 2013 +0100
+++ b/src/egonomy/views.py	Thu Feb 14 18:00:30 2013 +0100
@@ -1,15 +1,15 @@
 from django.conf import settings
 from django.contrib.auth.decorators import login_required
 from django.core.paginator import Paginator, InvalidPage, EmptyPage
+from django.core.urlresolvers import reverse
+from django.db.models.aggregates import Max
 from django.shortcuts import get_object_or_404, render_to_response, redirect
 from django.template import RequestContext
-from models import Image, Fragment
-from django.db.models.aggregates import Max
-import logging
+from egonomy.models import ImageMetadata, Image, Fragment
+from egonomy.search_indexes import QueryParser
+from egonomy.search_indexes.paginator import SearchPaginator
 from egonomy.search_indexes.query import ModelRelatedSearchQuerySet
-from egonomy.search_indexes import QueryParser
-from egonomy.models import ImageMetadata
-from egonomy.search_indexes.paginator import SearchPaginator
+import logging
 
 logger = logging.getLogger(__name__)
 
@@ -108,15 +108,19 @@
         paginator = SearchPaginator(res, nb)
     else:
         img_list = img_list.order_by('pk').all()
-        paginator = Paginator(img_list, nb)    
+        paginator = Paginator(img_list, nb)
     
     try:
         results = paginator.page(cur_page_nb)
     except (EmptyPage, InvalidPage):
         results = paginator.page(paginator.num_pages)
+    
+    url_pagination = reverse("all_pictures")
+    if search:
+        url_pagination = url_pagination + "?search=" + search
 
     return render_to_response("egonomy_all_pictures.html",
-                              {'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results},
+                              {'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb, "search":search, "nb_results":nb_results, "url_pagination":url_pagination},
                               context_instance=RequestContext(request))