A simple Django base view to zip and stream several files.
Project description
Django ZipView
A base view to zip and stream several files.
Installation
pip install django-zipview
Usage and examples
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 emails import Email
class AttachmentsArchiveView(BaseZipView):
"""Download at once all comments for a review."""
def get_files(self):
emails = Email.objects \
.filter(user=self.request.user) \
.exclude(attachment__isnull=True)
return [email.attachment.file for email in emails if email.attachment.name]
View configuration
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'
In case you need to dynamically set the filename, you can override the
get_archive_name
method. It takes the request as a parameter.
def get_archive_name(self, request):
import datetime
today = datetime.date.today()
return 'archive_{:%Y%m%d}.zip'.format(today)
Compatibility
Current supported django versions are 2.2, 3.1 and 3.2.
Testing
Django ZipView uses tox, the testing automation tool, to run tests.
To launch tests:
pip install -r requiments/test.txt
tox
Author
Crafted with love by Thibault Jouannic. You can contact him for Python / Django freelancing gigs.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
Built Distribution
Hashes for django_zipview-2.0.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b7e9839162113f8541dc11ab7a2512442a58558e4e9879d72e789bec4925b430 |
|
MD5 | 61dee6b48d0306361f7d9120cef7e36a |
|
BLAKE2b-256 | fdaa70e5e0781229a3e6d713efbf802efa482dc39a491729ca74f791f5eaf243 |