Children book formats are added to ZIP archive for shelf.
authorMarek Stępniowski <marek@stepniowski.com>
Wed, 24 Sep 2008 08:49:57 +0000 (10:49 +0200)
committerMarek Stępniowski <marek@stepniowski.com>
Wed, 24 Sep 2008 08:49:57 +0000 (10:49 +0200)
apps/catalogue/views.py

index f574c13..b73552e 100644 (file)
@@ -214,7 +214,18 @@ def download_shelf(request, slug):
     # Create a ZIP archive
     temp = temp = tempfile.TemporaryFile()
     archive = zipfile.ZipFile(temp, 'w')
     # 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))
         if book.pdf_file:
             filename = book.pdf_file.path
             archive.write(filename, str('%s.pdf' % book.slug))