# Documentation Django 3.1.9.dev

# Notes de publication de Django 3.1.1

September 1, 2020

Django 3.1.1 fixes two security issues and several bugs in 3.1.

## CVE-2020-24583: Incorrect permissions on intermediate-level directories on Python 3.7+

On Python 3.7+, `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 `collectstatic` management command.

You should review and manually fix permissions on existing intermediate-level directories.

## 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).

## Correction de bogues

- Les retours de ligne dans les étiquettes d’actions traduites en langues est-asiatiques ont été corrigés dans la barre latérale de navigation du site d’administration (#31853).
- Les retours de ligne dans les longs noms de modèles dans la barre latérale de navigation du site d’administration ont été corrigés (#31854).
- Le codage des données de sessions a été corrigé dans les cas de mises à jour de plusieurs instances du même projet vers Django 3.1 (#31864).
- Le gabarit de la barre latérale de navigation du site d’administration a été ajusté pour réduire la journalisation de débogage lors du rendu (#31865).
- Une possibilité de perte de données a été corrigée dans `select_for_update()`. Lorsqu’on utilisait des champs relationnels pointant vers un modèle mandataire dans le paramètre `of`, le modèle correspondant n’était pas verrouillé (#31866).
- Une possibilité de perte de données a été corrigée, à la suite d’une régression dans Django 2.0, lors de la copie d’instances de modèles avec une valeur de champ mise en cache (#31863).
- Correction d’une régression dans Django 3.1 qui provoquait un plantage lors du décodage des données de sessions non valides (#31895).
- Une obsolescence a été annulée dans Django 3.1, car elle provoquait un plantage lors du passage de paramètres nommés obsolètes à un jeu de requête dans `TemplateView.get_context_data()` (#31877).
- La sensibilité au fil d’exécution des points d’entrée `MiddlewareMixin.process_request()` et `process_response()` a été forcée dans un contexte asynchrone (#31905).
- L’expression de requête `__in` des transformations de clé de `JSONField` a été corrigée avec MariaDB, MySQL, Oracle et SQLite (#31936).
- Fixed a regression in Django 3.1 that caused permission errors in `CommonPasswordValidator` and `settings.py` generated by the `startproject` command, when user didn’t have permissions to all intermediate directories in a Django installation path (#31912).
- Fixed detecting an async `get_response` callable in various builtin middlewares (#31928).
- Fixed a `QuerySet.order_by()` crash on PostgreSQL when ordering and grouping by `JSONField` with a custom `decoder` (#31956). As a consequence, fetching a `JSONField` with raw SQL now returns a string instead of pre-loaded data. You will need to explicitly call `json.loads()` in such cases.
- 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 (#31965).
- Fixed a `django.contrib.admin.EmptyFieldListFilter` crash when using on reverse relations (#31952).
- Prevented content overflowing in the admin changelist view when the navigation sidebar is enabled (#31901).