+
+ # 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)):