# HG changeset patch # User cavaliet # Date 1361275950 -3600 # Node ID ea2c1961a51533a3061ae6ee8e1c269fb30af7e0 # Parent 119cd616faa4bc363258ae8979689ae00045a407 Enhance fragment search. Highlight works. diff -r 119cd616faa4 -r ea2c1961a515 src/egonomy/search_indexes/backends/elasticsearch_backend.py --- a/src/egonomy/search_indexes/backends/elasticsearch_backend.py Mon Feb 18 15:43:46 2013 +0100 +++ b/src/egonomy/search_indexes/backends/elasticsearch_backend.py Tue Feb 19 13:12:30 2013 +0100 @@ -30,18 +30,17 @@ result_class=result_class) #TODO : try to make list of field dynamic - #TODO : How to handle multiple + #TODO : How to handle multiple if highlight: highlight_def = kwargs.get('highlight', {}) + fields_def = highlight_def.get('fields', {}) - fields_def = highlight_def.get('fields', {}) - - if models is None or len(models) == 0 or ImageMetadata in models or Fragment in models: + if models is None or len(models) == 0 or Fragment in models: fields_def['tags'] = {} fields_def['title'] = {} fields_def['description'] = {} - kwargs['highlight'] = highlight_def.update({ + highlight_def.update({ 'pre_tags' : [""], 'post_tags' : [""], "number_of_fragments" : 0, diff -r 119cd616faa4 -r ea2c1961a515 src/egonomy/search_indexes/indexes.py --- a/src/egonomy/search_indexes/indexes.py Mon Feb 18 15:43:46 2013 +0100 +++ b/src/egonomy/search_indexes/indexes.py Tue Feb 19 13:12:30 2013 +0100 @@ -34,10 +34,10 @@ text = indexes.CharField(document=True, use_template=True) image = indexes.CharField(model_attr='image', indexed=False, stored=True) - author = indexes.CharField(model_attr='author', null=True) - title = indexes.CharField(model_attr='title', null=True) - description = indexes.CharField(model_attr='description', null=True) - tags = indexes.CharField(model_attr='tags', null=True) + author = indexes.CharField(model_attr='author', null=True, stored=True) + title = indexes.CharField(model_attr='title', null=True, stored=True) + description = indexes.CharField(model_attr='description', null=True, stored=True) + tags = indexes.CharField(model_attr='tags', null=True, stored=True) def get_model(self): return Fragment diff -r 119cd616faa4 -r ea2c1961a515 src/egonomy/templates/egonomy_all_fragments.html --- a/src/egonomy/templates/egonomy_all_fragments.html Mon Feb 18 15:43:46 2013 +0100 +++ b/src/egonomy/templates/egonomy_all_fragments.html Tue Feb 19 13:12:30 2013 +0100 @@ -27,7 +27,8 @@
- {% with frg.image.info.image_file as image %} + {% with frgmt=frg.object|default:frg %} + {% with image=frgmt.image.info.image_file %} {% if image %} {% if image|is_portrait %} {% thumbnail image "x110" format="PNG" crop="center" as im %} @@ -47,11 +48,12 @@ {% endif %} {% endwith %} - + + {% endwith %}
-

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

+

{% if search %}{{ frg.highlighted.title|first|safe|default:frg.title }}{% else %}{{ frg.title }}{% endif %}

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

{% endfor %} diff -r 119cd616faa4 -r ea2c1961a515 src/egonomy/views.py --- a/src/egonomy/views.py Mon Feb 18 15:43:46 2013 +0100 +++ b/src/egonomy/views.py Tue Feb 19 13:12:30 2013 +0100 @@ -145,8 +145,8 @@ 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) + res = RelatedSearchQuerySet().filter(qp.parse(search)).models(Fragment).load_all_queryset(Fragment, frg_list).load_all().highlight() + paginator = Paginator(res, nb) else: frg_list = frg_list.order_by('pk').all() paginator = Paginator(frg_list, nb) @@ -159,7 +159,6 @@ url_pagination = reverse("all_fragments") if search: url_pagination = url_pagination + "?search=" + search - return render_to_response("egonomy_all_fragments.html", {"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},