X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/55bc643c16dc56cf2377bd5c4d6e924d5fc62698..fa9ab52217a8e6912fa4677fc7bb1da21044b470:/apps/search/templatetags/search_tags.py diff --git a/apps/search/templatetags/search_tags.py b/apps/search/templatetags/search_tags.py index 03e33c8d2..6a2ccad44 100644 --- a/apps/search/templatetags/search_tags.py +++ b/apps/search/templatetags/search_tags.py @@ -22,10 +22,9 @@ from catalogue.models import Book register = template.Library() -@register.inclusion_tag('catalogue/book_searched.html') -def book_searched(result): +@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(book) # snippets = [] # for hit in result.hits: @@ -36,10 +35,25 @@ def book_searched(result): # 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) - - for hit in vals['hits']: - hit['snippets'] = map(lambda s: s.replace("\n", "
").replace('---', '—'), hit['snippets']) - - return vals + hits = filter(lambda (idx, h): + result.snippets[idx] is not None + or 'fragment' in h, enumerate(result.hits)) + print "[tmpl: from %d hits selected %d]" % (len(result.hits), len(hits)) + + for (idx, hit) in hits: + # currently we generate one snipper per hit though. + if result.snippets[idx] is None: + continue + snip = result.snippets[idx] + # fix some formattting + snip = snip.replace("\n", "
").replace('---', '—') + hit['snippet'] = snip + + return { + 'related': book.related_info(), + 'book': book, + 'main_link': book.get_absolute_url(), + 'request': context.get('request'), + 'hits': zip(*hits)[1], + 'main_link': book.get_absolute_url(), + }