from basicauth import logged_in_or_basicauth, factory_decorator
from catalogue.models import Book, Tag
from basicauth import logged_in_or_basicauth, factory_decorator
from catalogue.models import Book, Tag
{u"href": reverse("opds_authors"),
u"rel": u"start",
u"type": u"application/atom+xml"})
{u"href": reverse("opds_authors"),
u"rel": u"start",
u"type": u"application/atom+xml"})
{u"href": full_url(os.path.join(settings.STATIC_URL, "opensearch.xml")),
u"rel": u"search",
u"type": u"application/opensearchdescription+xml"})
{u"href": full_url(os.path.join(settings.STATIC_URL, "opensearch.xml")),
u"rel": u"search",
u"type": u"application/opensearchdescription+xml"})
descendants_keys = [book.pk for book in Book.tagged.with_any(l_tags)]
if descendants_keys:
books = books.exclude(pk__in=descendants_keys)
descendants_keys = [book.pk for book in Book.tagged.with_any(l_tags)]
if descendants_keys:
books = books.exclude(pk__in=descendants_keys)
title = u"Wyniki wyszukiwania"
INLINE_QUERY_RE = re.compile(r"(author:(?P<author>[^ ]+)|title:(?P<title>[^ ]+)|categories:(?P<categories>[^ ]+)|description:(?P<description>[^ ]+))")
title = u"Wyniki wyszukiwania"
INLINE_QUERY_RE = re.compile(r"(author:(?P<author>[^ ]+)|title:(?P<title>[^ ]+)|categories:(?P<categories>[^ ]+)|description:(?P<description>[^ ]+))")
def get_object(self, request):
"""
For OPDS 1.1 We should handle a query for search terms
def get_object(self, request):
"""
For OPDS 1.1 We should handle a query for search terms
OpenSearch defines fields: atom:author, atom:contributor (treated as translator),
atom:title. Inline query provides author, title, categories (treated as book tags),
description (treated as content search terms).
OpenSearch defines fields: atom:author, atom:contributor (treated as translator),
atom:title. Inline query provides author, title, categories (treated as book tags),
description (treated as content search terms).
if search terms are provided, we shall search for books
according to Hint information (from author & contributror & title).
if search terms are provided, we shall search for books
according to Hint information (from author & contributror & title).
if inline_criteria:
def get_criteria(criteria, name, position):
e = filter(lambda el: el[0][0:len(name)] == name, criteria)
if inline_criteria:
def get_criteria(criteria, name, position):
e = filter(lambda el: el[0][0:len(name)] == name, criteria)
author = get_criteria(inline_criteria, 'author', 1)
title = get_criteria(inline_criteria, 'title', 2)
translator = None
author = get_criteria(inline_criteria, 'author', 1)
title = get_criteria(inline_criteria, 'title', 2)
translator = None
author = request.GET.get('author', '')
title = request.GET.get('title', '')
translator = request.GET.get('translator', '')
author = request.GET.get('author', '')
title = request.GET.get('title', '')
translator = request.GET.get('translator', '')
- print "narrow to author %s" % author
- hint.tags(srch.search_tags(author, filt=srch.term_filter(Term('tag_category', 'author'))))
+ log.info("narrow to author %s" % author)
+ hint.tags(srch.search_tags(srch.make_phrase(srch.get_tokens(author, field='authors'), field='authors'),
+ filt=srch.term_filter(Term('tag_category', 'author'))))
filters.append(QueryWrapperFilter(
srch.make_phrase(srch.get_tokens(translator, field='translators'),
field='translators')))
filters.append(QueryWrapperFilter(
srch.make_phrase(srch.get_tokens(translator, field='translators'),
field='translators')))
q = srch.make_phrase(srch.get_tokens(title, field='title'), field='title')
hint.books(*srch.search_books(q, filt=flt))
toks = srch.get_tokens(query)
q = srch.make_phrase(srch.get_tokens(title, field='title'), field='title')
hint.books(*srch.search_books(q, filt=flt))
toks = srch.get_tokens(query)
results = SearchResult.aggregate(srch.search_perfect_book(toks, fuzzy=fuzzy, hint=hint),
srch.search_perfect_parts(toks, fuzzy=fuzzy, hint=hint),
srch.search_everywhere(toks, fuzzy=fuzzy, hint=hint))
results.sort(reverse=True)
results = SearchResult.aggregate(srch.search_perfect_book(toks, fuzzy=fuzzy, hint=hint),
srch.search_perfect_parts(toks, fuzzy=fuzzy, hint=hint),
srch.search_everywhere(toks, fuzzy=fuzzy, hint=hint))
results.sort(reverse=True)
else:
# Scenario 2: since we no longer have to figure out what the query term means to the user,
# we can just use filters and not the Hint class.
else:
# Scenario 2: since we no longer have to figure out what the query term means to the user,
# we can just use filters and not the Hint class.