X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/6bbfe08e5d5ea8c966355d3545505dcd76353426..968cb1f19a746aed062a8ee64f6d0f0dd5969e23:/apps/catalogue/views.py diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index 0055f522d..088d0eee6 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -81,8 +81,13 @@ def book_list(request): orphans = [] books_by_author = SortedDict() + books_nav = SortedDict() 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')) @@ -257,6 +262,8 @@ def book_stub_detail(request, 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'): @@ -529,13 +536,15 @@ def download_shelf(request, slug): temp = tempfile.TemporaryFile() archive = zipfile.ZipFile(temp, 'w') + already = set() for book in collect_books(models.Book.tagged.with_all(shelf)): if 'pdf' in formats and book.pdf_file: filename = book.pdf_file.path archive.write(filename, str('%s.pdf' % book.slug)) - if 'epub' in formats and book.epub_file: - filename = book.epub_file.path - archive.write(filename, str('%s.epub' % book.slug)) + if book.root_ancestor not in already and 'epub' in formats and book.root_ancestor.epub_file: + filename = book.root_ancestor.epub_file.path + archive.write(filename, str('%s.epub' % book.root_ancestor.slug)) + already.add(book.root_ancestor) if 'odt' in formats and book.odt_file: filename = book.odt_file.path archive.write(filename, str('%s.odt' % book.slug)) @@ -571,7 +580,7 @@ def shelf_book_formats(request, shelf): for book in collect_books(models.Book.tagged.with_all(shelf)): if book.pdf_file: formats['pdf'] = True - if book.epub_file: + if book.root_ancestor.epub_file: formats['epub'] = True if book.odt_file: formats['odt'] = True