Skip to content

Processus de signalement d'un contenu obsolète #6722

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 51 commits into
base: dev
Choose a base branch
from

Conversation

amined159
Copy link

@amined159 amined159 commented Mar 20, 2025

Processus de signalement d'un contenu obsolète.

Ce PR implémente un système complet de signalement des contenus obsolètes, accessible à tous les utilisateurs, et son traitement par les validateurs via une interface dédiée.

Fonctionnement côté utilisateur

  • Un bouton "Signaler une obsolescence" est visible en bas des articles pour tous les utilisateurs connectés.
  • En cliquant sur ce bouton :
    • Une fenêtre modale s’ouvre, demandant une justification du signalement.
    • Une fois le formulaire validé, un message privé est envoyé automatiquement à tous les membres du staff.
    • Ce message contient un lien vers l’interface de gestion des signalements obsolètes.

Fonctionnement côté staff / validateurs

  • Les validateurs disposent d’un accès à l’interface des signalements via un bouton "Signalement des contenus obsolètes" disponible dans leur menu profil.

  • L'interface affiche :

    • Une liste de tous les signalements.
    • Des filtres.
    • Pour chaque signalement, un bouton "Décider".
  • En cliquant sur "Décider" :

    • Un formulaire s’ouvre avec :
      • La justification initiale (modifiable).
      • Des options pour accepter ou rejeter le signalement.
    • Après validation :
      • Le signalement est traité, et le bouton "Décider" disparaît.
      • Si le signalement est accepté :
        • Le contenu est marqué comme obsolète avec justification enregistrée.
        • Une alerte "Ce contenu est obsolète" est affichée publiquement en haut du contenu.
        • Un message privé est envoyé à l’auteur du contenu concerné.

Actions supplémentaires pour les validateurs

  • Dans l’interface de lecture d’un contenu, les validateurs ont accès à un bouton contextuel :
    • "Marquer comme obsolète" si le contenu ne l’est pas.
    • "Marquer comme non obsolète" si le contenu est déjà marqué.
  • En cliquant :
    • Une fenêtre de justification s’affiche.
    • Après confirmation :
      • Le statut du contenu est mis à jour (obsolète / non obsolète).
      • Un message privé est envoyé automatiquement à l’auteur.

Recherche et visibilité

  • Lors d’une recherche par mot-clé dans le moteur de recherche :
    • Les contenus obsolètes apparaissent grisés.
    • Une étiquette "obsolète" est clairement visible dans les résultats.

Contrôle qualité

Vérifications générales

  1. Vérifier que le bouton "Signaler une obsolescence" est visible pour tous les utilisateurs en bas d’un article.
  2. Tester que cliquer sur ce bouton ouvre bien une fenêtre modale demandant une justification.
  3. Vérifier qu’après envoi :
    • Un message privé est envoyé aux membres du staff.
    • Le lien vers l’interface de gestion des signalements est bien présent dans le message.
  4. Vérifier que les validateurs voient bien le lien "Signalement des contenus obsolètes" dans leur menu profil.
  5. Tester le bon affichage de l’interface de gestion :
    • Les filtres sont fonctionnels.
    • Les signalements sont listés correctement.
    • Le bouton "Décider" s’affiche pour chaque signalement non traité.
  6. Tester le bouton "Décider" :
    • Le formulaire de décision est correctement prérempli.
    • L’état du signalement est mis à jour après décision.
    • Le bouton "Décider" disparaît après traitement.
    • Si validé, vérifier dans la base que obsolete_justif est renseigné.
    • Vérifier l’affichage de l’avertissement "Ce contenu est obsolète" en haut du contenu.
    • Vérifier que les auteurs reçoivent un message privé.
  7. Tester le bouton "Marquer comme obsolète / non obsolète" pour les validateurs :
    • Vérifier que le bouton s’affiche selon le statut du contenu.
    • Que la fenêtre de justification s’ouvre.
    • Que la mise à jour est effective et le MP est envoyé à l’auteur.
  8. Rechercher un contenu obsolète :
    • Le contenu doit apparaître grisé avec l’étiquette "obsolète" après re-indexation du moteur de recherche et pas immédiatement.

…les membres du staff et envoi de MP aux auteurs
Copy link
Member

@philippemilink philippemilink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

J'ai fait uniquement une revue de code (je n'ai pas testé) et je n'ai pas tout commenté, mais vous avez déjà de quoi faire :)


def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["forms_decide_obsolete"] = {report.pk: DecideObsoleteForm(obj=report) for report in context["reports"]}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Un seul formulaire devrait être suffisant (regardez comment sont faites les autres pages qui ont des tableaux où on peut faire des actions sur chaque ligne).

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

C'est dans report_obsolete.py

@github-project-automation github-project-automation bot moved this from En développement to Modification demandée in Suivi des PR Mar 20, 2025
Copy link
Member

@philippemilink philippemilink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je viens faire la revue de code de la deuxième moitié de la PR. Globalement : inspirez-vous de ce qui existe déjà (par exemple de la fonctionnalité pour signaler une typo, le tableau qui liste les demandes de validation, ...).

amined159 and others added 22 commits March 26, 2025 07:44
Co-authored-by: Ph. SW. <philippe.milink@gmx.fr>
Co-authored-by: Ph. SW. <philippe.milink@gmx.fr>
Co-authored-by: Ph. SW. <philippe.milink@gmx.fr>
Co-authored-by: Ph. SW. <philippe.milink@gmx.fr>
Co-authored-by: Ph. SW. <philippe.milink@gmx.fr>
Co-authored-by: Ph. SW. <philippe.milink@gmx.fr>
…ances et ajout migration qui met obsolete_justiv une valeur si le contenu est déjà obsolète.
@amined159 amined159 marked this pull request as ready for review April 28, 2025 14:49
@coveralls
Copy link

coveralls commented Apr 30, 2025

Coverage Status

coverage: 89.006% (-0.2%) from 89.225%
when pulling 3f57f6a on amined159:dev
into e30e481 on zestedesavoir:dev.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
Status: Modification demandée
Development

Successfully merging this pull request may close these issues.

5 participants