You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
La liste des étapes qui permet de reproduire le bug :
Signaler un commentaire sur un billet (ça devrait être pareil sur un article ou tutoriel, mais je trouve ça plus simple sur un billet)
Se connecter avec le compte de l'auteur du billet
Dépublier le billet
Supprimer le billet
En tant qu'admin, aller sur la page des alertes : une erreur 500 apparaît, parce que le commentaire associé à l'alerte est nul.
Origine du problème
La suppression du billet supprime en cascade les commentaires qui y ont été postés (ces commentaires sont représentés par la classe ContentReaction, qui hérite de Comment). Par contre, lors de la suppression des commentaires, les alertes associées ne sont pas supprimées, l'attribut comment prend alors la valeur None :
En fait lors du passage à Django 2.1 (#5233) où ont été introduit les on_delete, il y a eu pas mal d'hésitations sur quelle valeur donner à ce paramètre pour certains champs. Certains champs ont donc été mis à SET_NULL par mesure de précaution car c'est moins destructeur que CASCADE (qui comme son nom l'indique peut éventuellement tout supprimer en cascade).
Pour ce champ en particulier, je suppose que c'était soit une précaution à l'époque soit une erreur. Peut-être que @artragis se souvient ? En tous cas, je ne vois pas de contre-indication particulière qui empêcherait de mettre CASCADE ici.
Comment reproduire ?
La liste des étapes qui permet de reproduire le bug :
Origine du problème
La suppression du billet supprime en cascade les commentaires qui y ont été postés (ces commentaires sont représentés par la classe
ContentReaction
, qui hérite deComment
). Par contre, lors de la suppression des commentaires, les alertes associées ne sont pas supprimées, l'attributcomment
prend alors la valeurNone
:zds-site/zds/utils/models.py
Lines 639 to 647 in 44468ca
Je ne sais pas pourquoi c'est le cas. Si c'est juste une erreur, il suffit (a priori) d'utiliser
models.CASCADE
pour corriger le bug.The text was updated successfully, but these errors were encountered: