2020-08-04 10:34:38 +02:00
|
|
|
==========================
|
|
|
|
Django 3.1.1 release notes
|
|
|
|
==========================
|
|
|
|
|
2020-09-01 09:56:42 +02:00
|
|
|
*September 1, 2020*
|
2020-08-04 10:34:38 +02:00
|
|
|
|
2020-08-21 12:43:45 +02:00
|
|
|
Django 3.1.1 fixes two security issues and several bugs in 3.1.
|
2020-08-21 11:44:46 +02:00
|
|
|
|
|
|
|
CVE-2020-24583: Incorrect permissions on intermediate-level directories on Python 3.7+
|
|
|
|
======================================================================================
|
|
|
|
|
|
|
|
On Python 3.7+, :setting:`FILE_UPLOAD_DIRECTORY_PERMISSIONS` mode was not
|
|
|
|
applied to intermediate-level directories created in the process of uploading
|
|
|
|
files and to intermediate-level collected static directories when using the
|
|
|
|
:djadmin:`collectstatic` management command.
|
|
|
|
|
|
|
|
You should review and manually fix permissions on existing intermediate-level
|
|
|
|
directories.
|
2020-08-04 10:34:38 +02:00
|
|
|
|
2020-08-21 12:43:45 +02:00
|
|
|
CVE-2020-24584: Permission escalation in intermediate-level directories of the file system cache on Python 3.7+
|
|
|
|
===============================================================================================================
|
|
|
|
|
|
|
|
On Python 3.7+, the intermediate-level directories of the file system cache had
|
|
|
|
the system's standard umask rather than ``0o077`` (no group or others
|
|
|
|
permissions).
|
|
|
|
|
2020-08-04 10:34:38 +02:00
|
|
|
Bugfixes
|
|
|
|
========
|
|
|
|
|
2020-08-05 08:01:24 +02:00
|
|
|
* Fixed wrapping of translated action labels in the admin's navigation sidebar
|
|
|
|
for East Asian languages (:ticket:`31853`).
|
2020-08-05 09:11:06 +02:00
|
|
|
|
|
|
|
* Fixed wrapping of long model names in the admin's navigation sidebar
|
|
|
|
(:ticket:`31854`).
|
2020-08-07 21:42:39 +02:00
|
|
|
|
|
|
|
* Fixed encoding session data while upgrading multiple instances of the same
|
|
|
|
project to Django 3.1 (:ticket:`31864`).
|
2020-08-11 10:11:42 +02:00
|
|
|
|
|
|
|
* Adjusted admin's navigation sidebar template to reduce debug logging when
|
|
|
|
rendering (:ticket:`31865`).
|
2020-08-08 07:17:36 +02:00
|
|
|
|
|
|
|
* Fixed a data loss possibility in the
|
|
|
|
:meth:`~django.db.models.query.QuerySet.select_for_update()`. When using
|
|
|
|
related fields pointing to a proxy model in the ``of`` argument, the
|
|
|
|
corresponding model was not locked (:ticket:`31866`).
|
2020-08-12 13:19:46 +02:00
|
|
|
|
2020-08-13 16:29:55 +02:00
|
|
|
* Fixed a data loss possibility, following a regression in Django 2.0, when
|
|
|
|
copying model instances with a cached fields value (:ticket:`31863`).
|
2020-08-19 12:06:00 +02:00
|
|
|
|
|
|
|
* Fixed a regression in Django 3.1 that caused a crash when decoding an invalid
|
|
|
|
session data (:ticket:`31895`).
|
2020-08-24 09:00:12 +02:00
|
|
|
|
|
|
|
* Reverted a deprecation in Django 3.1 that caused a crash when passing
|
|
|
|
deprecated keyword arguments to a queryset in
|
|
|
|
``TemplateView.get_context_data()`` (:ticket:`31877`).
|
2020-08-20 18:41:22 +02:00
|
|
|
|
|
|
|
* Enforced thread sensitivity of the :class:`MiddlewareMixin.process_request()
|
|
|
|
<django.utils.deprecation.MiddlewareMixin>` and ``process_response()`` hooks
|
|
|
|
when in an async context (:ticket:`31905`).
|
2020-08-26 22:13:37 +02:00
|
|
|
|
|
|
|
* Fixed ``__in`` lookup on key transforms for
|
|
|
|
:class:`~django.db.models.JSONField` with MariaDB, MySQL, Oracle, and SQLite
|
|
|
|
(:ticket:`31936`).
|
2020-08-28 05:57:36 +02:00
|
|
|
|
|
|
|
* Fixed a regression in Django 3.1 that caused permission errors in
|
|
|
|
``CommonPasswordValidator`` and ``settings.py`` generated by the
|
|
|
|
:djadmin:`startproject` command, when user didn't have permissions to all
|
|
|
|
intermediate directories in a Django installation path (:ticket:`31912`).
|
2020-08-24 22:25:33 +02:00
|
|
|
|
|
|
|
* Fixed detecting an async ``get_response`` callable in various builtin
|
|
|
|
middlewares (:ticket:`31928`).
|
2020-08-28 07:56:04 +02:00
|
|
|
|
|
|
|
* Fixed a ``QuerySet.order_by()`` crash on PostgreSQL when ordering and
|
|
|
|
grouping by :class:`~django.db.models.JSONField` with a custom
|
2020-09-10 11:00:13 +02:00
|
|
|
:attr:`~django.db.models.JSONField.decoder` (:ticket:`31956`). As a
|
|
|
|
consequence, fetching a ``JSONField`` with raw SQL now returns a string
|
2022-03-11 09:11:42 +01:00
|
|
|
instead of preloaded data. You will need to explicitly call ``json.loads()``
|
2020-09-10 11:00:13 +02:00
|
|
|
in such cases.
|
2020-08-30 09:00:15 +02:00
|
|
|
|
|
|
|
* Fixed a ``QuerySet.delete()`` crash on MySQL, following a performance
|
|
|
|
regression in Django 3.1 on MariaDB 10.3.2+, when filtering against an
|
|
|
|
aggregate function (:ticket:`31965`).
|
2020-08-27 22:23:42 +02:00
|
|
|
|
|
|
|
* Fixed a ``django.contrib.admin.EmptyFieldListFilter`` crash when using on
|
|
|
|
reverse relations (:ticket:`31952`).
|
2020-08-19 02:40:32 +02:00
|
|
|
|
|
|
|
* Prevented content overflowing in the admin changelist view when the
|
|
|
|
navigation sidebar is enabled (:ticket:`31901`).
|