Changelog¶
This document describes changes between past releases. For information about future releases, check milestones [1] and Vision.
2.3 (unreleased)¶
- Drop Django 3.0 support
- Add Django 3.2 support
- Add support for Python 3.10
- Add support for Django 4.0
2.2 (unreleased)¶
- Remove support for Python 3.5 and Django 1.11
- Add support for Python 3.9 and Django 3.1
- Remove old urls syntax and adopt the new one
- Move the project to the jazzband organization
- Adopt black automatic formatting rules
2.1.1 (2020-01-14)¶
- Fix missing function parameter. (#152)
2.1 (2020-01-13)¶
- Add a SignedFileSystemStorage that signs file URLs for clients. (#151)
2.0 (2020-01-07)¶
- Drop support for Python 2.7.
- Add black and isort.
1.10 (2020-01-07)¶
- Introduced support from Django 1.11, 2.2 and 3.0.
- Drop support of Django 1.5, 1.6, 1.7, 1.8, 1.9, 1.10, 2.0 and 2.1
1.9 (2016-03-15)¶
- Feature #112 - Introduced support of Django 1.9.
- Feature #113 - Introduced support of Python 3.5.
- Feature #116 -
HTTPFile
hascontent_type
property. It makesHTTPDownloadView
proxyContent-Type
header from remote location.
1.8 (2015-07-20)¶
Bugfixes.
- Bugfix #103 -
PathDownloadView.get_file()
makes a single call toPathDownloadView.get_file()
(was doing it twice). - Bugfix #104 - Pass numeric timestamp to Django’s
was_modified_since()
(was passing a datetime).
1.7 (2015-06-13)¶
Bugfixes.
- Bugfix #87 - Filenames with commas are now supported. In download responses, filename is now surrounded by double quotes.
- Bugfix #97 -
HTTPFile
proxies bytes asBytesIteratorIO
(was undecoded urllib3 file object).StringIteratorIO
has been split intoTextIteratorIO
andBytesIteratorIO
.StringIteratorIO
is deprecated but kept for backward compatibility as an alias forTextIteratorIO
. - Bugfix #92 - Run demo using
make demo runserver
(was broken). - Feature #99 - Tox runs project’s tests with Python 2.7, 3.3 and 3.4, and with Django 1.5 to 1.8.
- Refactoring #98 - Refreshed development environment: packaging, Tox and Sphinx.
1.6 (2014-03-03)¶
Python 3 support, development environment refactoring.
- Feature #46: introduced support for Python>=3.3.
- Feature #80: added documentation about “how to serve a file inline VS how to
serve a file as attachment”. Improved documentation of views’ base options
inherited from
DownloadMixin
. - Feature #74: the Makefile in project’s repository no longer creates a virtualenv. Developers setup the environment as they like, i.e. using virtualenv, virtualenvwrapper or whatever. Tests are run with tox.
1.5 (2013-11-29)¶
X-Sendfile support and helpers to migrate for django-sendfile.
- Feature #2 - Introduced support of Lighttpd’s x-Sendfile.
- Feature #36 - Introduced support of Apache’s mod_xsendfile.
- Feature #41 -
django_downloadview.sendfile
is a port of django-sendfile’ssendfile
function. The documentation contains notes about migrating from django-sendfile to django-downloadview.
1.4 (2013-11-24)¶
Bugfixes and documentation features.
- Bugfix #43 -
ObjectDownloadView
returns HTTP 404 if model instance’s file field is empty (was HTTP 500). - Bugfix #7 - Special characters in file names (
Content-Disposition
header) are urlencoded. An US-ASCII fallback is also provided. - Feature #10 - django-downloadview is registered on djangopackages.com.
- Feature #65 - INSTALL documentation shows “known good set” (KGS) of versions, i.e. versions that have been used in test environment.
1.3 (2013-11-08)¶
Big refactoring around middleware configuration, API readability and documentation.
Bugfix #57 -
PathDownloadView
opens files in binary mode (was text mode).Bugfix #48 - Fixed
basename
assertion inassert_download_response
: checksContent-Disposition
header.Bugfix #49 - Fixed
content
assertion inassert_download_response
: checks only response’sstreaming_content
attribute.Bugfix #60 -
VirtualFile.__iter__
usesforce_bytes()
to support both “text-mode” and “binary-mode” content. See https://code.djangoproject.com/ticket/21321Feature #50 - Introduced
django_downloadview.DownloadDispatcherMiddleware
that iterates over a list of configurable download middlewares. Allows to plug several download middlewares with different configurations.This middleware is mostly dedicated to internal usage. It is used by
SmartDownloadMiddleware
described below.Feature #42 - Documentation shows how to stream generated content (yield). Introduced
django_downloadview.StringIteratorIO
.Refactoring #51 - Dropped support of Python 2.6
Refactoring #25 - Introduced
django_downloadview.SmartDownloadMiddleware
which allows to setup multiple optimization rules for one backend.Deprecates the following settings related to previous single-and-global middleware:
NGINX_DOWNLOAD_MIDDLEWARE_MEDIA_ROOT
NGINX_DOWNLOAD_MIDDLEWARE_MEDIA_URL
NGINX_DOWNLOAD_MIDDLEWARE_EXPIRES
NGINX_DOWNLOAD_MIDDLEWARE_WITH_BUFFERING
NGINX_DOWNLOAD_MIDDLEWARE_LIMIT_RATE
Refactoring #52 - ObjectDownloadView now inherits from SingleObjectMixin and BaseDownloadView (was DownloadMixin and BaseDetailView). Simplified DownloadMixin.render_to_response() signature.
Refactoring #40 - Documentation includes examples from demo project.
Refactoring #39 - Documentation focuses on usage, rather than API. Improved narrative documentation.
Refactoring #53 - Added base classes in
django_downloadview.middlewares
, such asProxiedDownloadMiddleware
.Refactoring #54 - Expose most Python API directly in django_downloadview package. Simplifies
import
statements in client applications. Splitted nginx module in a package.Added unit tests, improved code coverage.
1.2 (2013-05-28)¶
Bugfixes and documentation improvements.
- Bugfix #26 - Prevented computation of virtual file’s size, unless the file wrapper implements was_modified_since() method.
- Bugfix #34 - Improved support of files that do not implement modification time.
- Bugfix #35 - Fixed README conversion from reStructuredText to HTML (PyPI).
1.1 (2013-04-11)¶
Various improvements. Contains backward incompatible changes.
- Added HTTPDownloadView to proxy to arbitrary URL.
- Added VirtualDownloadView to support files living in memory.
- Using StreamingHttpResponse introduced with Django 1.5. Makes Django 1.5 a requirement!
- Added
django_downloadview.test.assert_download_response
utility. - Download views and response now use file wrappers. Most logic around file attributes, formerly in views, moved to wrappers.
- Replaced DownloadView by PathDownloadView and StorageDownloadView. Use the right one depending on the use case.
1.0 (2012-12-04)¶
- Introduced optimizations for Nginx X-Accel: a middleware and a decorator
- Introduced generic views: DownloadView and ObjectDownloadView
- Initialized project
Notes & references
[1] | https://github.com/jazzband/django-downloadview/milestones |