X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/bcd038fcea6b45b29ff3831b31f758dcec6b4157..c54df654d0d513e91167a53454c5c2fdcd166752:/apps/search/templatetags/search_tags.py diff --git a/apps/search/templatetags/search_tags.py b/apps/search/templatetags/search_tags.py index 32d5b64c5..57734c10c 100644 --- a/apps/search/templatetags/search_tags.py +++ b/apps/search/templatetags/search_tags.py @@ -35,15 +35,28 @@ def book_searched(context, result): # We don't need hits which lead to sections but do not have # snippets. - hits = filter(lambda h: 'fragment' in h or - h['snippets'], result.hits) - - for hit in hits: - hit['snippets'] = map(lambda s: s.replace("\n", "
").replace('---', '—'), hit['snippets']) + 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 = re.subn(r"(^[ \t\n]+|[ \t\n]+$)", u"", + re.subn(r"[ \t\n]*\n[ \t\n]*", u"\n", snip)) + + 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': hits, + 'hits': hits and zip(*hits)[1] or [], + 'main_link': book.get_absolute_url(), }