Développement #40244
Rattraper les exceptions levées par backend.request()
0%
Description
La plupart du temps cette méthode est safe, mais dans des backends qui utilisent des webservices on doit parfois lever des exceptions.
Files
Associated revisions
lingo: handle exceptions raised by backend.request (#40244)
lingo: handle exceptions raised by backend.request (#40244)
lingo: handle exceptions raised by backend.request (#40244)
lingo: handle exceptions raised by backend.request (#40244)
History
Updated by Valentin Deniaud almost 5 years ago
- File 0001-lingo-handle-exceptions-raised-by-backend.request-40.patch 0001-lingo-handle-exceptions-raised-by-backend.request-40.patch added
- Status changed from Nouveau to Solution proposée
- Patch proposed changed from No to Yes
Il y a eopayment.common.RequestException
qui est un peu moche, idéalement il faudrait un mini commit dans eopayment pour pouvoir se passer du common.
Updated by Emmanuel Cazenave almost 5 years ago
Valentin Deniaud a écrit :
Il y a
eopayment.common.RequestException
qui est un peu moche, idéalement il faudrait un mini commit dans eopayment pour pouvoir se passer du common.
Je suis d'accord et d'avis de faire ce commit là bas avant de patcher ici.
Et même si c'est bête comme chou, un petit test ici me semblerait pas mal.
Updated by Benjamin Dauvergne almost 5 years ago
Il faut éviter les erreurs HTTP sur des vues utilisateurs, c'est toujours mieux d'afficher un message et de permettre à l'utilisateur de revenir à un endroit où on peut retenter le paiement (et il y a déjà une vue pour ça normalement dans lingo).
Updated by Emmanuel Cazenave almost 5 years ago
C'est vrai ça, c'est fait un peu plus haut assez dégueulassement par mes soins:
messages.warning(request, _(u'Minimal payment amount is %s €.') % regie.payment_min_amount) return HttpResponseRedirect(get_payment_status_view(next_url=items[0].source_url))
Mais plus proprement ici un
messages.warning(request, _("un message intelligent")) return HttpResponseRedirect(get_payment_status_view(next_url=next_url))
devrait faire l'affaire, à tester quand même.
Updated by Valentin Deniaud almost 5 years ago
- File 0001-lingo-handle-exceptions-raised-by-backend.request-40.patch 0001-lingo-handle-exceptions-raised-by-backend.request-40.patch added
Sans l'erreur HTTP et avec un test. Par contre il ne va pas passer tant que #40353 côté eopayment n'est pas déployé, je pense.
Updated by Frédéric Péters almost 5 years ago
Oui, et il faut modifier setup.py et debian/control pour mentionner la nouvelle version minimale pour eopayment.
Updated by Valentin Deniaud almost 5 years ago
Je l'avais oublié, mais à lire le code, la pratique de rediriger vers next_url directos dans PayView est largement majoritaire, et me semble être la bonne. La manière dont sont affichées les erreurs sur la page de statut et le parcours que donne get_payment_status_view me paraissent bizarres, et là en l’occurrence j'ai surtout envie de revenir appuyer quelques coups sur le bouton de paiement voir si ça finit par marcher, donc autant ne pas me faire passer par trois pages intermédiaires.
Updated by Emmanuel Cazenave almost 5 years ago
Valentin Deniaud a écrit :
Je l'avais oublié, mais à lire le code, la pratique de rediriger vers next_url directos dans PayView est largement majoritaire
Parce que la page de 'statut de paiement' est récente et il y a peut-être des encore des trous dans la raquette mais c'est vers ça qu'on veut aller.
La manière dont sont affichées les erreurs sur la page de statut et le parcours que donne get_payment_status_view me paraissent bizarres
C'est sûrement perfectible, faisons des tickets.
et là en l’occurrence j'ai surtout envie de revenir appuyer quelques coups sur le bouton de paiement voir si ça finit par marcher
C'est un peu emmêlé ces histoires de next_url mais de de mémoire selon comment auront été fait les appels d'ajouts d'item au panier, tu vas te retrouver soit directement sur la démarche sans aucune info sur ce qui s'est passé, soit sur la page du panier où le commun des mortels est perdu (#36469#note-1), soit sur la page d'accueil de combo en pleine pampa.
Updated by Valentin Deniaud almost 5 years ago
- File 0001-lingo-handle-exceptions-raised-by-backend.request-40.patch 0001-lingo-handle-exceptions-raised-by-backend.request-40.patch added
Je teste depuis une cellule combo où next_url fait revenir sur la cellule, mais j'entends qu'il y existe d'autres cas où la redirection soit moins opportune, allons-y pour get_payment_status_view.
Updated by Valentin Deniaud almost 5 years ago
- File 0001-lingo-handle-exceptions-raised-by-backend.request-40.patch 0001-lingo-handle-exceptions-raised-by-backend.request-40.patch added
(avec update des tests)
Updated by Emmanuel Cazenave almost 5 years ago
- Status changed from Solution proposée to Solution validée
Valentin Deniaud a écrit :
Je teste depuis une cellule combo où next_url fait revenir sur la cellule
C'est clairement un cas que je n'avais pas du tout en tête en faisant le patch qui a introduit get_payment_status_view
, n'hésite pas remonter les problèmes que ça pourrait poser dans ce cas d'usage.
Updated by Valentin Deniaud almost 5 years ago
- Status changed from Solution validée to Résolu (à déployer)
commit 271e13b6803401fbddd0c2a1b67f917a0ca03cd4 Author: Valentin Deniaud <vdeniaud@entrouvert.com> Date: Thu Feb 27 17:22:56 2020 +0100 lingo: handle exceptions raised by backend.request (#40244)
Updated by Frédéric Péters almost 5 years ago
- Status changed from Résolu (à déployer) to Solution déployée
lingo: handle exceptions raised by backend.request (#40244)