# Documentation Django 5.2.8

# Notes de publication de Django 3.1.1

1er septembre 2020

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

## CVE-2020-24583 : permissions incorrectes sur les répertoires de niveau intermédiaire avec Python 3.7+

Avec Python 3.7+, le mode `FILE_UPLOAD_DIRECTORY_PERMISSIONS` n’était pas appliqué aux répertoires de niveau intermédiaire créés dans le processus de téléversement de fichiers et pour les répertoires de niveau intermédiaire des fichiers statiques collectés lors de l’utilisation de la commande d’administration `collectstatic`.

Vous devriez examiner et corriger manuellement les permissions sur les répertoires de niveau intermédaire existants.

## CVE-2020-24584 : escalade de permissions dans les répertoires intermédiaires du cache par système de fichiers avec Python 3.7+.

Avec Python 3.7+, les répertoires intermédiaires du cache par système de fichiers possédaient la valeur `umask` standard du système au lieu de `0o077` (aucune permission de groupe ou d’autres (others)).

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

- Fixed a data loss possibility in the `select_for_update()`. When using related fields pointing to a proxy model in the `of` argument, the corresponding model was not locked (#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 preloaded 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).