zestedesavoir/zds-site

La notification d'une réponse dans un billet lorsque celui-ci a été modifié mène à une erreur 404.

julienbohy opened this issue · 1 comments

Description du bug

La notification d'une réponse dans un billet lorsque celui-ci a été modifié mène à une erreur 404.

Dans mes notifs => Mauvais lien Mauvais lien](https://zestedesavoir.com/billets/4492/le-point-sur-la-programmation-objet-poo/?page=1#p250970)

Ce qu'il devrait être=> Bon lien https://zestedesavoir.com/billets/4492/un-point-sur-la-programmation-objet-poo/?page=1#p251002

Comment reproduire ?

La liste des étapes qui permet de reproduire le bug :

  1. Le billet Un point sur la programmation objet (POO) créé par SpaceFox a été publié
  2. En temps qu'utilisateur, je met un commentaire sur ce billet
  3. Le contenu du billet est modifié/publié.
  4. Dans mes notifications, le lien mène à une erreur 404

Comportement attendu

le lien de la notification devrait changer également

Capture d'écran

Si possible, une capture d'écran qui explique le problème.

Informations techniques

  • OS: -
  • Navigateur: -
  • Version/environnement de zds: production

Ce qu'il s'est passé, c'est que SpaceFox a renommé son billet après qu'il ait été publié. Il est tout à fait possible de faire ça, seulement là, un bug (qu'on connaît et qui a été corrigé, en attente de déploiement) s'est produit. La correction de ce bug demande de supprimer l'entité qui est identifiée par le lien https://zestedesavoir.com/billets/4492/le-point-sur-la-programmation-objet-poo/. C'est de là que vient l'erreur 404. Si le bug n'était pas survenu, l'entité derrière l'ancienne URL aurait redirigé vers la nouvelle URL. Sans cette entité, pas de redirection.

Je me demande s'il faut chercher à implémenter quelque chose pour corriger cette situation, qui ne devrait, en temps normal, pas se produire : là je supprime une entité depuis la zone d'admin de Django, normalement on ne fait jamais ça. Surtout que le problème qui nécessite cette manipulation est corrigé...

La correction n'est pas complètement évidente. On stocke directement l'URL dans les notifications. Ça veut dire que lorsqu'on supprime un PublishedContent, il faut sélectionner toutes les notifications qui pointent vers cette URL et... que faire avec ? On ne veut pas les supprimer, ça reste une notification et on n'a plus d'URL vers laquelle les faire pointer puisque qu'il n'y a plus de version publique du contenu... Admettons qu'on trouve une solution à ça, ça veut que lors de la republication du contenu, il faut mettre à jour l'URL de ces notifications... Ça me semble être du bricolage pour un cas qui ne devrait pas se produire, qui n'est pas grave (pas de corruption de données, pas de réelle gêne pour l'utilisateur) et on peut toujours marquer la notification comme lue pour pas qu'elle dérange.

Sinon, l'autre solution évoquée peut être de ne s'appuyer que sur l'id du contenu et non pas le slug pour rediriger vers l'URL de la version publique actuelle.