Project

General

Profile

Développement #40244

Rattraper les exceptions levées par backend.request()

Added by Valentin Deniaud almost 5 years ago. Updated almost 5 years ago.

Status:
Fermé
Priority:
Normal
Target version:
-
Start date:
27 February 2020
Due date:
% Done:

0%

Estimated time:
Patch proposed:
Yes
Planning:
No

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

Revision d5977ef0 (diff)
Added by Valentin Deniaud almost 5 years ago

lingo: handle exceptions raised by backend.request (#40244)

Revision 001e5968 (diff)
Added by Valentin Deniaud almost 5 years ago

lingo: handle exceptions raised by backend.request (#40244)

Revision eae2ccd4 (diff)
Added by Valentin Deniaud almost 5 years ago

lingo: handle exceptions raised by backend.request (#40244)

Revision 5255eb67 (diff)
Added by Valentin Deniaud almost 5 years ago

lingo: handle exceptions raised by backend.request (#40244)

Revision 271e13b6 (diff)
Added by Valentin Deniaud almost 5 years ago

lingo: handle exceptions raised by backend.request (#40244)

History

#1

Updated by Valentin Deniaud almost 5 years ago

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.

#2

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.

#3

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).

#4

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.

#5

Updated by Valentin Deniaud almost 5 years ago

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.

#6

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.

#8

Updated by Emmanuel Cazenave almost 5 years ago

Et le get_payment_status_view ?

#9

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.

#10

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.

#11

Updated by Valentin Deniaud almost 5 years ago

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.

#13

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.

#14

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)

#15

Updated by Frédéric Péters almost 5 years ago

  • Status changed from Résolu (à déployer) to Solution déployée

Also available in: Atom PDF