A base view to zip and stream several files.
pip install django-zipview
To create a zip download view:
- Extend BaseZipView
- implement
get_files
- That's it
The get_files
method must return a list of Django's File objects.
Example:
from zipview.views import BaseZipView
from reviews import Review
class CommentsArchiveView(BaseZipView):
"""Download at once all comments for a review."""
def get_files(self):
document_key = self.kwargs.get('document_key')
reviews = Review.objects \
.filter(document__document_key=document_key) \
.exclude(comments__isnull=True)
return [review.comments.file for review in reviews if review.comments.name]
By default, the downloaded file is named download.zip
you can set a custom name
by setting the zipfile_name
parameter.
class ZipView(BaseZipView):
zipfile_name = 'toto.zip'
Django ZipView uses tox, the testing automation tool, to run tests.
To launch tests:
pip install tox
tox
Crafted with love by Thibault Jouannic. You can contact him for Python / Django freelancing gigs.