search fixes
authorRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Fri, 20 Jan 2012 14:24:19 +0000 (15:24 +0100)
committerRadek Czajka <radoslaw.czajka@nowoczesnapolska.org.pl>
Fri, 20 Jan 2012 14:24:19 +0000 (15:24 +0100)
apps/search/index.py
apps/search/templatetags/search_tags.py
wolnelektury/templates/catalogue/search_multiple_hits.html

index df44888..9972c2c 100644 (file)
@@ -653,7 +653,11 @@ class SearchResult(object):
         hits = sections.values()
 
         for f in frags:
         hits = sections.values()
 
         for f in frags:
-            frag = catalogue.models.Fragment.objects.get(anchor=f[FRAGMENT])
+            try:
+                frag = catalogue.models.Fragment.objects.get(anchor=f[FRAGMENT])
+            except catalogue.models.Fragment.DoesNotExist:
+                # stale index
+                continue
 
             # Figure out if we were searching for a token matching some word in theme name.
             themes = frag.tags.filter(category='theme')
 
             # Figure out if we were searching for a token matching some word in theme name.
             themes = frag.tags.filter(category='theme')
index 8ae648d..32d5b64 100644 (file)
@@ -25,7 +25,6 @@ register = template.Library()
 @register.inclusion_tag('catalogue/book_searched.html', takes_context=True)
 def book_searched(context, result):
     book = Book.objects.get(pk=result.book_id)
 @register.inclusion_tag('catalogue/book_searched.html', takes_context=True)
 def book_searched(context, result):
     book = Book.objects.get(pk=result.book_id)
-    vals = book_wide(context, book)
 
     # snippets = []
     # for hit in result.hits:
 
     # snippets = []
     # for hit in result.hits:
@@ -36,10 +35,15 @@ def book_searched(context, result):
 
     # We don't need hits which lead to sections but do not have
     # snippets.
 
     # We don't need hits which lead to sections but do not have
     # snippets.
-    vals['hits'] = filter(lambda h: 'fragment' in h or
-                          h['snippets'], result.hits)
+    hits = filter(lambda h: 'fragment' in h or
+                  h['snippets'], result.hits)
 
 
-    for hit in vals['hits']:
+    for hit in hits:
         hit['snippets'] = map(lambda s: s.replace("\n", "<br />").replace('---', '&mdash;'), hit['snippets'])
 
         hit['snippets'] = map(lambda s: s.replace("\n", "<br />").replace('---', '&mdash;'), hit['snippets'])
 
-    return vals
+    return {
+        'related': book.related_info(),
+        'book': book,
+        'request': context.get('request'),
+        'hits': hits,
+    }
index 0a7dc1c..31e67a8 100644 (file)
@@ -1,6 +1,6 @@
 {% extends "base.html" %}
 {% load i18n %}
 {% extends "base.html" %}
 {% load i18n %}
-{% load search_tags pagination_tags %}
+{% load catalogue_tags search_tags pagination_tags %}
 
 {% block titleextra %}{% trans "Search" %}{% endblock %}
 
 
 {% block titleextra %}{% trans "Search" %}{% endblock %}
 
@@ -23,7 +23,7 @@
       <ol class="work-list">
        {% for author in results.author %}
        <li class="work-item">
       <ol class="work-list">
        {% for author in results.author %}
        <li class="work-item">
-         {{author.book.short_html}}
+         {% book_short author.book %}
        </li>
        {% endfor %}
       </ol>
        </li>
        {% endfor %}
       </ol>
@@ -40,7 +40,7 @@
       <ol class="work-list">
        {% for result in results.title %}
        <li class="work-item">
       <ol class="work-list">
        {% for result in results.title %}
        <li class="work-item">
-         {{result.book.short_html}}
+         {% book_short result.book %}
        </li>
        {% endfor %}
       </ol>
        </li>
        {% endfor %}
       </ol>