2012-12-04 10:47:37 +00:00
|
|
|
Changelog
|
|
|
|
|
=========
|
|
|
|
|
|
2013-11-06 00:46:55 +00:00
|
|
|
This document describes changes between past releases. For information about
|
|
|
|
|
future releases, check `milestones`_ and :doc:`/about/vision`.
|
|
|
|
|
|
2025-10-28 10:34:20 +00:00
|
|
|
2.6.0 (unreleased)
|
|
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
- No changes yet
|
|
|
|
|
|
|
|
|
|
|
2025-10-28 10:22:41 +00:00
|
|
|
2.5.0 (2025-10-28)
|
2022-08-04 13:22:28 +00:00
|
|
|
----------------
|
|
|
|
|
|
2025-10-28 10:22:41 +00:00
|
|
|
- Upgrade to Django 5.2 and Python 3.14
|
2024-08-05 12:51:35 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
2.4.0 (2024-08-05)
|
|
|
|
|
------------------
|
|
|
|
|
|
2022-08-04 13:22:28 +00:00
|
|
|
- Drop support for Python 3.6
|
2024-08-05 08:45:59 +00:00
|
|
|
- Escape malicious filenames
|
|
|
|
|
- Handle headers in XAccel responses
|
2022-08-04 13:22:28 +00:00
|
|
|
|
|
|
|
|
|
2024-08-05 12:51:35 +00:00
|
|
|
2.3.0 (2022-01-11)
|
|
|
|
|
------------------
|
2020-10-08 17:01:09 +00:00
|
|
|
|
2021-04-16 11:35:39 +00:00
|
|
|
- Drop Django 3.0 support
|
2021-04-16 11:50:40 +00:00
|
|
|
- Add Django 3.2 support
|
2022-01-11 09:37:35 +00:00
|
|
|
- Add support for Python 3.10
|
|
|
|
|
- Add support for Django 4.0
|
2020-10-05 09:18:13 +00:00
|
|
|
- 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
|
2020-01-14 09:26:51 +00:00
|
|
|
|
|
|
|
|
|
2020-01-14 09:24:28 +00:00
|
|
|
2.1.1 (2020-01-14)
|
|
|
|
|
------------------
|
2020-01-13 09:51:20 +00:00
|
|
|
|
2020-01-14 09:24:28 +00:00
|
|
|
- Fix missing function parameter. (#152)
|
2020-01-13 09:51:20 +00:00
|
|
|
|
|
|
|
|
|
2020-01-13 09:51:07 +00:00
|
|
|
2.1 (2020-01-13)
|
2020-01-07 15:12:31 +00:00
|
|
|
----------------
|
|
|
|
|
|
2020-01-13 09:50:51 +00:00
|
|
|
- Add a SignedFileSystemStorage that signs file URLs for clients. (#151)
|
2020-01-07 15:12:31 +00:00
|
|
|
|
|
|
|
|
|
2020-01-07 15:11:58 +00:00
|
|
|
2.0 (2020-01-07)
|
2020-01-07 13:45:29 +00:00
|
|
|
----------------
|
|
|
|
|
|
2020-01-07 15:11:58 +00:00
|
|
|
- Drop support for Python 2.7.
|
|
|
|
|
- Add black and isort.
|
2020-01-07 13:45:29 +00:00
|
|
|
|
|
|
|
|
|
2020-01-07 13:45:15 +00:00
|
|
|
1.10 (2020-01-07)
|
2016-03-15 11:18:35 +00:00
|
|
|
-----------------
|
|
|
|
|
|
2020-01-07 13:45:15 +00:00
|
|
|
- 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
|
2016-03-15 11:18:35 +00:00
|
|
|
|
|
|
|
|
|
2016-03-15 11:16:24 +00:00
|
|
|
1.9 (2016-03-15)
|
2015-07-20 16:55:22 +00:00
|
|
|
----------------
|
|
|
|
|
|
2016-03-14 15:59:30 +00:00
|
|
|
- Feature #112 - Introduced support of Django 1.9.
|
|
|
|
|
|
|
|
|
|
- Feature #113 - Introduced support of Python 3.5.
|
2015-07-20 16:55:22 +00:00
|
|
|
|
2016-03-15 11:13:31 +00:00
|
|
|
- Feature #116 - ``HTTPFile`` has ``content_type`` property. It makes
|
|
|
|
|
``HTTPDownloadView`` proxy ``Content-Type`` header from remote location.
|
|
|
|
|
|
2015-07-20 16:55:22 +00:00
|
|
|
|
2015-07-20 16:53:00 +00:00
|
|
|
1.8 (2015-07-20)
|
2015-06-12 23:46:40 +00:00
|
|
|
----------------
|
|
|
|
|
|
2015-07-20 15:43:18 +00:00
|
|
|
Bugfixes.
|
|
|
|
|
|
|
|
|
|
- Bugfix #103 - ``PathDownloadView.get_file()`` makes a single call to
|
|
|
|
|
``PathDownloadView.get_file()`` (was doing it twice).
|
2015-06-12 23:46:40 +00:00
|
|
|
|
2015-07-20 16:43:46 +00:00
|
|
|
- Bugfix #104 - Pass numeric timestamp to Django's ``was_modified_since()``
|
|
|
|
|
(was passing a datetime).
|
|
|
|
|
|
2015-06-12 23:46:40 +00:00
|
|
|
|
2015-06-12 23:45:31 +00:00
|
|
|
1.7 (2015-06-13)
|
2014-03-03 13:44:17 +00:00
|
|
|
----------------
|
|
|
|
|
|
2015-07-20 15:43:18 +00:00
|
|
|
Bugfixes.
|
|
|
|
|
|
2015-06-12 23:37:33 +00:00
|
|
|
- Bugfix #87 - Filenames with commas are now supported. In download responses,
|
|
|
|
|
filename is now surrounded by double quotes.
|
|
|
|
|
|
2015-06-12 22:39:58 +00:00
|
|
|
- Bugfix #97 - ``HTTPFile`` proxies bytes as ``BytesIteratorIO`` (was undecoded
|
|
|
|
|
urllib3 file object). ``StringIteratorIO`` has been split into
|
|
|
|
|
``TextIteratorIO`` and ``BytesIteratorIO``. ``StringIteratorIO`` is
|
|
|
|
|
deprecated but kept for backward compatibility as an alias for
|
|
|
|
|
``TextIteratorIO``.
|
|
|
|
|
|
2015-06-12 23:39:05 +00:00
|
|
|
- Bugfix #92 - Run demo using ``make demo runserver`` (was broken).
|
|
|
|
|
|
2015-06-12 22:39:58 +00:00
|
|
|
- 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.
|
2014-03-03 13:44:17 +00:00
|
|
|
|
|
|
|
|
|
2014-03-03 13:43:28 +00:00
|
|
|
1.6 (2014-03-03)
|
2013-11-29 08:23:54 +00:00
|
|
|
----------------
|
|
|
|
|
|
2014-03-03 13:43:28 +00:00
|
|
|
Python 3 support, development environment refactoring.
|
|
|
|
|
|
2014-02-24 23:57:07 +00:00
|
|
|
- Feature #46: introduced support for Python>=3.3.
|
|
|
|
|
|
2014-03-03 07:19:43 +00:00
|
|
|
- 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``.
|
|
|
|
|
|
2014-02-10 00:27:14 +00:00
|
|
|
- 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.
|
2013-11-29 08:23:54 +00:00
|
|
|
|
|
|
|
|
|
2013-11-29 08:23:32 +00:00
|
|
|
1.5 (2013-11-29)
|
2013-11-24 10:18:03 +00:00
|
|
|
----------------
|
|
|
|
|
|
2013-11-29 08:23:32 +00:00
|
|
|
X-Sendfile support and helpers to migrate for `django-sendfile`.
|
2013-11-28 21:21:11 +00:00
|
|
|
|
2013-11-28 22:02:40 +00:00
|
|
|
- Feature #2 - Introduced support of Lighttpd's x-Sendfile.
|
2013-11-28 23:55:46 +00:00
|
|
|
|
2013-11-28 21:21:11 +00:00
|
|
|
- Feature #36 - Introduced support of Apache's mod_xsendfile.
|
2013-11-24 10:18:03 +00:00
|
|
|
|
2013-11-28 23:55:46 +00:00
|
|
|
- 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`.
|
|
|
|
|
|
2013-11-24 10:18:03 +00:00
|
|
|
|
2013-11-24 10:17:31 +00:00
|
|
|
1.4 (2013-11-24)
|
2013-11-08 10:31:59 +00:00
|
|
|
----------------
|
|
|
|
|
|
2013-11-24 10:12:25 +00:00
|
|
|
Bugfixes and documentation features.
|
2013-11-24 09:37:45 +00:00
|
|
|
|
|
|
|
|
- Bugfix #43 - ``ObjectDownloadView`` returns HTTP 404 if model instance's file
|
|
|
|
|
field is empty (was HTTP 500).
|
|
|
|
|
|
2013-11-18 11:12:02 +00:00
|
|
|
- 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.
|
2013-11-08 10:31:59 +00:00
|
|
|
|
2013-11-24 10:12:25 +00:00
|
|
|
- Feature #65 - INSTALL documentation shows "known good set" (KGS) of versions,
|
|
|
|
|
i.e. versions that have been used in test environment.
|
|
|
|
|
|
2013-11-08 10:31:59 +00:00
|
|
|
|
2013-11-08 10:31:11 +00:00
|
|
|
1.3 (2013-11-08)
|
2013-05-28 13:52:26 +00:00
|
|
|
----------------
|
|
|
|
|
|
2013-11-05 10:53:29 +00:00
|
|
|
Big refactoring around middleware configuration, API readability and
|
|
|
|
|
documentation.
|
|
|
|
|
|
2013-11-08 08:37:54 +00:00
|
|
|
- Bugfix #57 - ``PathDownloadView`` opens files in binary mode (was text mode).
|
|
|
|
|
|
2013-11-06 00:46:55 +00:00
|
|
|
- Bugfix #48 - Fixed ``basename`` assertion in ``assert_download_response``:
|
|
|
|
|
checks ``Content-Disposition`` header.
|
2013-11-05 10:53:29 +00:00
|
|
|
|
2013-11-06 00:46:55 +00:00
|
|
|
- Bugfix #49 - Fixed ``content`` assertion in ``assert_download_response``:
|
|
|
|
|
checks only response's ``streaming_content`` attribute.
|
2013-11-05 10:53:29 +00:00
|
|
|
|
2013-11-08 08:56:26 +00:00
|
|
|
- Bugfix #60 - ``VirtualFile.__iter__`` uses ``force_bytes()`` to support both
|
|
|
|
|
"text-mode" and "binary-mode" content.
|
|
|
|
|
See https://code.djangoproject.com/ticket/21321
|
|
|
|
|
|
2013-11-06 23:09:30 +00:00
|
|
|
- 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.
|
2013-11-06 00:46:55 +00:00
|
|
|
|
|
|
|
|
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
|
2013-11-05 10:53:29 +00:00
|
|
|
BaseDownloadView (was DownloadMixin and BaseDetailView).
|
2013-11-06 00:46:55 +00:00
|
|
|
Simplified DownloadMixin.render_to_response() signature.
|
2013-11-05 10:53:29 +00:00
|
|
|
|
2013-11-06 00:46:55 +00:00
|
|
|
- Refactoring #40 - Documentation includes examples from demo project.
|
2013-11-05 10:53:29 +00:00
|
|
|
|
2013-11-06 00:46:55 +00:00
|
|
|
- Refactoring #39 - Documentation focuses on usage, rather than API. Improved
|
|
|
|
|
narrative documentation.
|
2013-11-05 10:53:29 +00:00
|
|
|
|
2013-11-06 00:46:55 +00:00
|
|
|
- Refactoring #53 - Added base classes in ``django_downloadview.middlewares``,
|
|
|
|
|
such as ``ProxiedDownloadMiddleware``.
|
2013-05-28 13:52:26 +00:00
|
|
|
|
2013-11-06 00:46:55 +00:00
|
|
|
- Refactoring #54 - Expose most Python API directly in `django_downloadview`
|
2013-11-05 10:53:29 +00:00
|
|
|
package. Simplifies ``import`` statements in client applications.
|
2013-11-06 00:46:55 +00:00
|
|
|
Splitted nginx module in a package.
|
2013-11-05 10:53:29 +00:00
|
|
|
|
|
|
|
|
- Added unit tests, improved code coverage.
|
|
|
|
|
|
2013-05-28 13:52:26 +00:00
|
|
|
|
2013-05-28 13:51:32 +00:00
|
|
|
1.2 (2013-05-28)
|
2013-04-11 13:57:47 +00:00
|
|
|
----------------
|
|
|
|
|
|
2013-05-28 06:51:31 +00:00
|
|
|
Bugfixes and documentation improvements.
|
|
|
|
|
|
2013-11-05 10:53:29 +00:00
|
|
|
- Bugfix #26 - Prevented computation of virtual file's size, unless the file
|
2013-05-28 13:15:32 +00:00
|
|
|
wrapper implements was_modified_since() method.
|
2013-11-05 10:53:29 +00:00
|
|
|
|
|
|
|
|
- Bugfix #34 - Improved support of files that do not implement modification
|
|
|
|
|
time.
|
|
|
|
|
|
|
|
|
|
- Bugfix #35 - Fixed README conversion from reStructuredText to HTML (PyPI).
|
|
|
|
|
|
2013-04-11 13:57:47 +00:00
|
|
|
|
2013-04-11 13:56:44 +00:00
|
|
|
1.1 (2013-04-11)
|
2012-12-04 11:58:32 +00:00
|
|
|
----------------
|
|
|
|
|
|
2013-04-11 09:39:22 +00:00
|
|
|
Various improvements.
|
|
|
|
|
Contains **backward incompatible changes.**
|
2013-02-06 17:59:22 +00:00
|
|
|
|
2013-04-08 13:39:06 +00:00
|
|
|
- Added HTTPDownloadView to proxy to arbitrary URL.
|
|
|
|
|
|
|
|
|
|
- Added VirtualDownloadView to support files living in memory.
|
|
|
|
|
|
2013-03-20 15:00:20 +00:00
|
|
|
- Using StreamingHttpResponse introduced with Django 1.5. Makes Django 1.5 a
|
|
|
|
|
requirement!
|
|
|
|
|
|
|
|
|
|
- Added ``django_downloadview.test.assert_download_response`` utility.
|
|
|
|
|
|
2013-02-06 17:59:22 +00:00
|
|
|
- Download views and response now use file wrappers. Most logic around file
|
|
|
|
|
attributes, formerly in views, moved to wrappers.
|
2013-03-20 15:00:20 +00:00
|
|
|
|
2013-02-06 17:59:22 +00:00
|
|
|
- Replaced DownloadView by PathDownloadView and StorageDownloadView. Use the
|
|
|
|
|
right one depending on the use case.
|
2012-12-04 11:58:32 +00:00
|
|
|
|
|
|
|
|
|
2012-12-04 11:57:48 +00:00
|
|
|
1.0 (2012-12-04)
|
2012-12-04 10:47:37 +00:00
|
|
|
----------------
|
|
|
|
|
|
|
|
|
|
- Introduced optimizations for Nginx X-Accel: a middleware and a decorator
|
|
|
|
|
- Introduced generic views: DownloadView and ObjectDownloadView
|
|
|
|
|
- Initialized project
|
2013-11-06 00:46:55 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
.. rubric:: Notes & references
|
|
|
|
|
|
|
|
|
|
.. target-notes::
|
|
|
|
|
|
2020-09-17 13:48:41 +00:00
|
|
|
.. _`milestones`: https://github.com/jazzband/django-downloadview/milestones
|