# HG changeset patch # User cavaliet # Date 1361198626 -3600 # Node ID 119cd616faa4bc363258ae8979689ae00045a407 # Parent 277ebc746baf9df05eeb113cbf58a5a5ae46e236 Search fragment works. Highlight needs to be improved. diff -r 277ebc746baf -r 119cd616faa4 src/egonomy/templates/egonomy_all_fragments.html --- a/src/egonomy/templates/egonomy_all_fragments.html Fri Feb 15 19:03:15 2013 +0100 +++ b/src/egonomy/templates/egonomy_all_fragments.html Mon Feb 18 15:43:46 2013 +0100 @@ -3,14 +3,24 @@ {% load i18n %} {% load thumbnail %} {% load navigation %} +{% load highlight %} {% block title %}{% trans "All fragments" %}{% endblock %} {% block content %}
-

{% trans "All fragments" %}

- {% if nb_pages %}

{% build_pagination nb_pages cur_page_nb "all_fragments" "contents_page clickable" %}

{% endif %} + {% if search %} + {% ifequal nb_results 0 %} +

{% trans "No results for" %} « {{ search }} »  + {% else %} +

{% trans "Search results for" %} « {{ search }} » : + {% endifequal %} + {% trans "All fragments" %}

+ {% else %} +

{% trans "All pictures" %}

+ {% endif %} + {% if nb_pages %}

{% build_pagination nb_pages cur_page_nb url_pagination "contents_page clickable" %}

{% endif %}
-

{{ frg.title }}

+

{% if search %}{% highlight frg.title with search html_tag "span" css_class "highlight" %}{% else %}{{ frg.title }}{% endif %}

{% trans "Annotated by" %} {{ frg.author }}

{% endfor %} - {% if nb_pages %}

{% build_pagination nb_pages cur_page_nb "all_fragments" "contents_page clickable" %}

{% endif %} + {% if nb_pages %}

{% build_pagination nb_pages cur_page_nb url_pagination "contents_page clickable" %}

{% endif %} {% endblock %} diff -r 277ebc746baf -r 119cd616faa4 src/egonomy/templates/egonomy_all_pictures.html --- a/src/egonomy/templates/egonomy_all_pictures.html Fri Feb 15 19:03:15 2013 +0100 +++ b/src/egonomy/templates/egonomy_all_pictures.html Mon Feb 18 15:43:46 2013 +0100 @@ -3,6 +3,7 @@ {% load i18n %} {% load thumbnail %} {% load navigation %} +{% load highlight %} {% block title %}{% trans "All pictures" %}{% endblock %} @@ -45,7 +46,7 @@ {% endif %} {% endwith %} -

{% if img.metadata.titre %}{{ img.metadata.titre }}{% else %}({% trans "No title" %}){% endif %}

+

{% if img.metadata.titre %}{% if search %}{% highlight img.metadata.titre with search html_tag "span" css_class "highlight" %}{% else %}{{ img.metadata.titre }}{% endif %}{% else %}({% trans "No title" %}){% endif %}

{% trans "Author" %} : {% if img.metadata.auteur %}{{ img.metadata.auteur }}{% else %}({% trans "Not documented" %}){% endif %}

{% endfor %} diff -r 277ebc746baf -r 119cd616faa4 src/egonomy/templates/egonomy_base.html --- a/src/egonomy/templates/egonomy_base.html Fri Feb 15 19:03:15 2013 +0100 +++ b/src/egonomy/templates/egonomy_base.html Mon Feb 18 15:43:46 2013 +0100 @@ -20,7 +20,7 @@

TagItAll {% trans "by" %} eGonomy

-
+
diff -r 277ebc746baf -r 119cd616faa4 src/egonomy/views.py --- 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))