X-Git-Url: https://git.mdrn.pl/wolnelektury.git/blobdiff_plain/e1ca1ec8d77b79835f83bb8910cdd629e1cd3534..5670a10f90a88d52fda0d1f23fef62aa9edc8467:/apps/catalogue/views.py?ds=sidebyside diff --git a/apps/catalogue/views.py b/apps/catalogue/views.py index f574c13fa..b73552ed6 100644 --- a/apps/catalogue/views.py +++ b/apps/catalogue/views.py @@ -214,7 +214,18 @@ def download_shelf(request, slug): # Create a ZIP archive temp = temp = tempfile.TemporaryFile() archive = zipfile.ZipFile(temp, 'w') - for book in models.Book.tagged.with_all(shelf): + + # Collect all books to include in ZIP archive + def collect_books(books): + result = [] + for book in books: + if len(book.children.all()) == 0: + result.append(book) + else: + result += collect_books(book.children.all()) + return result + + for book in collect_books(models.Book.tagged.with_all(shelf)): if book.pdf_file: filename = book.pdf_file.path archive.write(filename, str('%s.pdf' % book.slug))