--- a/src/egonomy/views.py Fri Feb 15 19:03:15 2013 +0100
+++ b/src/egonomy/views.py Mon Feb 18 15:43:46 2013 +0100
@@ -9,6 +9,7 @@
from egonomy.search_indexes import QueryParser
from egonomy.search_indexes.paginator import SearchPaginator
from egonomy.search_indexes.query import ModelRelatedSearchQuerySet
+from haystack.query import RelatedSearchQuerySet
import logging
logger = logging.getLogger(__name__)
@@ -125,21 +126,43 @@
def all_fragments(request):
-
+
# Get the cur_page_nb number parameter if possible
cur_page_nb = request.GET.get("page") or 1
cur_page_nb = int(cur_page_nb)
-
- frg_list = Fragment.objects.all().order_by('pk').select_related('image', 'image__info', 'image__metadata','author')
+
+ search = None
+ nb_results = 1
+ if "search" in request.GET:
+ search = request.GET["search"]
+ field = "all"
+ if "field" in request.GET:
+ field = request.GET["field"]
+
+ frg_list = Fragment.objects.select_related('image', 'image__info', 'image__metadata','author')
nb = getattr(settings,"IMAGES_PER_PAGE", 32)
- paginator = Paginator(frg_list, nb)
+ if search:
+ if not field or field == 'all':
+ field = 'text'
+ qp = QueryParser(field)
+ res = RelatedSearchQuerySet().filter(qp.parse(search)).models(Fragment).load_all_queryset(Fragment, frg_list).load_all()
+ paginator = SearchPaginator(res, nb)
+ else:
+ frg_list = frg_list.order_by('pk').all()
+ paginator = Paginator(frg_list, nb)
+
try:
results = paginator.page(cur_page_nb)
except (EmptyPage, InvalidPage):
results = paginator.page(paginator.num_pages)
+
+ url_pagination = reverse("all_fragments")
+ if search:
+ url_pagination = url_pagination + "?search=" + search
+
return render_to_response("egonomy_all_fragments.html",
- {'results':results, 'nb_pages':paginator.num_pages, 'cur_page_nb':cur_page_nb},
+ {"search_fragment":True, '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))