Skip to content
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

Gère les exceptions qui ne sont pas les nôtres pour les statistiques #6333

Merged
merged 2 commits into from
Jun 16, 2022

Conversation

philippemilink
Copy link
Member

Lors de la récupération des statistiques d'un contenu, on intercepte toutes les Exception, donc même celles qu'on n'a pas levées nous-mêmes et qui peuvent venir d'un vrai problème qu'on n'aurait pas anticipé. Le problème, c'est qu'on considère que toutes les Exceptions auront comme arguments un logger et un message. Dans le cas d'une exception qui n'ont pas levé nous-même, cela n'est bien-sûr pas garanti et on se retrouve avec des TypeError: 'str' object is not callable ou ValueError: not enough values to unpack (expected 2, got 1) lorsqu'on veut traiter l'exception...

Cette PR corrige ce problème en introduisant une classe d'exceptions qui permet de distinguer les exceptions qu'on génère nous-même (et donc on sait qu'elles on un logger et un message) et les autres.

Contrôle qualité

Un peu casse-pieds à tester, le plus simple étant sans doute :

  • Se connecter comme admin et aller sur les statistiques d'un contenu : la page doit s'afficher et un message doit dire Impossible de récupérer les statistiques du site (You can't access this resource as it requires 'view' access for the website id = 4.).
  • Ajouter entre le try et l'appel à get_all_statistics la ligne : raise Exception("foo") pour simuler une exception qui ne vient pas de nous (cas qui générait une ValueError auparavant). Aller sur la page, le message d'erreur doit maintenant contenir foo.
  • Ajouter entre le try et l'appel à get_all_statistics la ligne : raise Exception("foo", "bar") pour simuler une exception qui ne vient pas de nous (cas qui générait une TypeError auparavant). Aller sur la page, le message d'erreur doit maintenant contenir ("foo", "bar").

Une exception qui n'est pas levée explicitement par notre code ne contient pas un logger et un message comme arguments...

Détecté grâce à Sentry.
@philippemilink philippemilink added S-BUG Corrige un problème C-Back Concerne le back-end Django labels Jun 5, 2022
@coveralls
Copy link

coveralls commented Jun 5, 2022

Coverage Status

Coverage decreased (-0.02%) to 87.88% when pulling 44004a3 on philippemilink:stats-better-exceptions into b70c4a4 on zestedesavoir:dev.

Copy link
Contributor

@Arnaud-D Arnaud-D left a comment

Choose a reason for hiding this comment

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

QA OK ✔️

@Arnaud-D Arnaud-D enabled auto-merge (squash) June 16, 2022 16:25
@Arnaud-D Arnaud-D merged commit ec43b7e into zestedesavoir:dev Jun 16, 2022
@philippemilink philippemilink deleted the stats-better-exceptions branch June 16, 2022 19:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-Back Concerne le back-end Django S-BUG Corrige un problème
Projects
Archived in project
Archived in project
Development

Successfully merging this pull request may close these issues.

3 participants