Conversation
Collaborator
|
Merci ! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
En lisant
web/b3desk/endpoints/captcha.py, j'ai remarqué quecaptchetat_service_status()est le seul appel à CaptchEtat qui n'attrape pasrequests.RequestException.captcha_proxy()etcaptcha_validation()le font déjà, tout commeget_meetings_stats()danspublic.py.Or ce healthcheck sert justement à masquer le captcha quand le service ne répond pas (le « hotfix » commenté dans
should_display_captcha()). Si CaptchEtat est injoignable (connexion refusée, timeout, DNS) ou renvoie autre chose que du JSON, l'exception remonte jusqu'à la vuepublic.home. Un visiteur qui a dépasséCAPTCHA_NUMBER_ATTEMPTStombe alors sur une erreur 500 à chaque chargement de la page d'accueil. Le compteur de tentatives n'est pas remis à zéro, puisquecaptcha_error()n'est jamais appelé, donc l'erreur persiste tant que la session vit.Le correctif enveloppe l'appel et la lecture du JSON dans le même
tryque les fonctions voisines, journalise le même message « Network issue during connection to captchetat » et renvoie{"success": False}, 503, sur le modèle decaptcha_proxy(). La fonction n'a qu'un appelant,should_display_captcha(), qui compare seulement le résultat à"UP". La branche « pas de jeton » renvoie déjà un tuple de ce genre, donc rien ne change pour les autres cas : la page d'accueil s'affiche simplement sans captcha, ce qui est déjà le comportement prévu quand le service est signalé comme indisponible.Côté utilisateur : plus d'erreur 500 sur
/homequand CaptchEtat est injoignable. Côté administrateur : pas de migration ni de nouveau paramètre, seulement une lignecaptcha error : Network issue...dans les logs.J'ai ajouté deux tests dans
web/tests/meeting/test_captcha.py, l'un surcaptchetat_service_status()et l'autre surGET /homeavec un compteur de tentatives dépassé. Tous les deux échouent surmainavecrequests.exceptions.ConnectionErroret passent avec le correctif. La suite complète passe en local avecpytest --db=sqlite -nauto(431 passed), et ruff ainsi que ruff format passent sur les fichiers modifiés. Les nouvelles lignes sont couvertes par les tests ajoutés.AI tools used