fixes #815: books arrangement
[wolnelektury.git] / apps / catalogue / views.py
index 556bae1..79faca7 100644 (file)
@@ -81,8 +81,13 @@ def book_list(request):
 
     orphans = []
     books_by_author = SortedDict()
 
     orphans = []
     books_by_author = SortedDict()
+    books_nav = SortedDict()
     for tag in models.Tag.objects.filter(category='author'):
         books_by_author[tag] = []
     for tag in models.Tag.objects.filter(category='author'):
         books_by_author[tag] = []
+        if books_nav.has_key(tag.sort_key[0]):
+            books_nav[tag.sort_key[0]].append(tag)
+        else:
+            books_nav[tag.sort_key[0]] = [tag]
 
     for book in books_by_parent[None]:
         authors = list(book.tags.filter(category='author'))
 
     for book in books_by_parent[None]:
         authors = list(book.tags.filter(category='author'))
@@ -159,7 +164,7 @@ def tagged_object_list(request, tags=''):
             objects = fragments
     else:
         # get relevant books and their tags
             objects = fragments
     else:
         # get relevant books and their tags
-        objects = models.Book.tagged.with_all(tags).order_by()
+        objects = models.Book.tagged.with_all(tags)
         if not shelf_is_set:
             # eliminate descendants
             l_tags = models.Tag.objects.filter(category='book', slug__in=[book.book_tag_slug() for book in objects])
         if not shelf_is_set:
             # eliminate descendants
             l_tags = models.Tag.objects.filter(category='book', slug__in=[book.book_tag_slug() for book in objects])
@@ -257,6 +262,8 @@ def book_stub_detail(request, slug):
 
 def book_text(request, slug):
     book = get_object_or_404(models.Book, slug=slug)
 
 def book_text(request, slug):
     book = get_object_or_404(models.Book, slug=slug)
+    if not book.has_html_file():
+        raise Http404
     book_themes = {}
     for fragment in book.fragments.all():
         for theme in fragment.tags.filter(category='theme'):
     book_themes = {}
     for fragment in book.fragments.all():
         for theme in fragment.tags.filter(category='theme'):