X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/ae60b2a3949e96357477cc04f90fd0873cee8a92..ddf2102eff7ea420a4ea5144c43409587fc1156e:/src/search/templatetags/search_tags.py diff --git a/src/search/templatetags/search_tags.py b/src/search/templatetags/search_tags.py index c135b8096..8d0b74be8 100644 --- a/src/search/templatetags/search_tags.py +++ b/src/search/templatetags/search_tags.py @@ -1,41 +1,19 @@ -# -*- coding: utf-8 -*- # This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later. # Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information. # -# import feedparser -# import datetime - -from django import template -# from django.contrib.auth.forms import UserCreationForm, AuthenticationForm -# from django.db.models import Q -# from django.utils.translation import ugettext as _ -from catalogue.models import Book import re -# from catalogue.forms import SearchForm -# from catalogue.utils import split_tags - +from django import template 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) - - # 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): - 'fragment' in h or - result.snippets[idx] is not None, - enumerate(result.hits)) - # print "[tmpl: from %d hits selected %d]" % (len(result.hits), len(hits)) + hits = [(idx, h) + for (idx, h) in enumerate(result.hits) + if result.snippets[idx] is not None or ('fragment' in h and h['themes_hit'])] for (idx, hit) in hits: # currently we generate one snipper per hit though. @@ -45,14 +23,14 @@ def book_searched(context, result): 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]*", "\n", snip) + snip = re.sub(r"(^[ \t\n]+|[ \t\n]+$)", "", snip) snip = snip.replace("\n", "
").replace('---', '—') hit['snippet'] = snip return { 'request': context['request'], - 'book': book, - 'hits': hits and zip(*hits)[1] or [] + 'book': result.book, + 'hits': list(zip(*hits))[1] if hits else [] }