# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
# This file is part of Wolnelektury, licensed under GNU Affero GPLv3 or later.
# Copyright © Fundacja Nowoczesna Polska. See NOTICE for more information.
#
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"})
def get_object(self, request, category):
feed = [feed for feed in _root_feeds if feed['category']==category]
def get_object(self, request, category):
feed = [feed for feed in _root_feeds if feed['category']==category]
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)
link = u'http://www.wolnelektury.pl/'
description = u"Półki użytkownika na stronie http://WolneLektury.pl"
author_name = u"Wolne Lektury"
link = u'http://www.wolnelektury.pl/'
description = u"Półki użytkownika na stronie http://WolneLektury.pl"
author_name = u"Wolne Lektury"
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, filter=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')))
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.
srch.make_phrase(srch.get_tokens(q, field=fld), field=fld)))
flt = srch.chain_filters(filters)
srch.make_phrase(srch.get_tokens(q, field=fld), field=fld)))
flt = srch.chain_filters(filters)