X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/357027375ff8867f42ca34bcbfb5a78b5b185fc3..05e5b36046d980e84776978660f420b008db4879:/src/search/templatetags/search_tags.py diff --git a/src/search/templatetags/search_tags.py b/src/search/templatetags/search_tags.py index 8dbad9dae..da5a85bc7 100644 --- a/src/search/templatetags/search_tags.py +++ b/src/search/templatetags/search_tags.py @@ -22,28 +22,23 @@ register = template.Library() def book_searched(context, result): book = Book.objects.get(pk=result.book_id) - # snippets = [] - # for hit in result.hits: - # if hit['snippets']: - # snippets.append(hit['snippets']) - # elif hit['fragment']: - # snippets.append(hit['fragment'].short_text) - # We don't need hits which lead to sections but do not have # 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)) + result.snippets[idx] is not None or ('fragment' in h and h['themes_hit']), + 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 len(result.snippets) <= idx: + break 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)[0])[0] + snip = re.sub(r"[ \t\n]*\n[ \t\n]*", u"\n", snip) + snip = re.sub(r"(^[ \t\n]+|[ \t\n]+$)", u"", snip) snip = snip.replace("\n", "
").replace('---', '—') hit['snippet'] = snip @@ -51,5 +46,5 @@ def book_searched(context, result): return { 'request': context['request'], 'book': book, - 'hits': hits and zip(*hits)[1] or [] + 'hits': zip(*hits)[1] if hits else [] }