Fix section counting/targetting from search snippet
[wolnelektury.git] / apps / opds / views.py
index cd91a74..dc094bb 100644 (file)
@@ -18,7 +18,7 @@ from django.contrib.sites.models import Site
 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
 
-from search import MultiSearch, SearchResult, JVM
+from search import Search, SearchResult, JVM
 from lucene import Term, QueryWrapperFilter, TermQuery
 
 import re
 from lucene import Term, QueryWrapperFilter, TermQuery
 
 import re
@@ -234,7 +234,7 @@ class ByCategoryFeed(Feed):
         return feed['title']
 
     def items(self, feed):
         return feed['title']
 
     def items(self, feed):
-        return (tag for tag in Tag.objects.filter(category=feed['category']) if tag.get_count() > 0)
+        return Tag.objects.filter(category=feed['category']).exclude(book_count=0)
 
     def item_title(self, item):
         return item.name
 
     def item_title(self, item):
         return item.name
@@ -285,7 +285,7 @@ class UserFeed(Feed):
         return u"Półki użytkownika %s" % user.username
 
     def items(self, user):
         return u"Półki użytkownika %s" % user.username
 
     def items(self, user):
-        return (tag for tag in Tag.objects.filter(category='set', user=user) if tag.get_count() > 0)
+        return Tag.objects.filter(category='set', user=user).exclude(book_count=0)
 
     def item_title(self, item):
         return item.name
 
     def item_title(self, item):
         return item.name
@@ -332,7 +332,11 @@ class SearchFeed(AcquisitionFeed):
     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
-        and atom:author, atom:contributor, atom:title
+        and criteria provided either as opensearch or 'inline' query.
+        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).
 
@@ -372,7 +376,7 @@ class SearchFeed(AcquisitionFeed):
             fuzzy = False
 
 
             fuzzy = False
 
 
-        srch = MultiSearch()
+        srch = Search()
         hint = srch.hint()
 
         # Scenario 1: full search terms provided.
         hint = srch.hint()
 
         # Scenario 1: full search terms provided.