Changelog¶
This document describes changes between past releases. For information about future releases, check milestones [1] and Vision.
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‘s sendfile 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 in assert_download_response: checks Content-Disposition header.
Bugfix #49 - Fixed content assertion in assert_download_response: checks only response’s streaming_content attribute.
Bugfix #60 - VirtualFile.__iter__ uses force_bytes() to support both “text-mode” and “binary-mode” content. See https://code.djangoproject.com/ticket/21321
Feature #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 as ProxiedDownloadMiddleware.
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/benoitbryon/django-downloadview/issues/milestones |