Development #49148
faire de payment_status un accesseur de la méthode sur le backend
0%
Description
Ce sera plus simple pour détecter si la méthode est implémentée ou pas que d'utiliser NotImplementedError.
Fichiers
Demandes liées
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Fichier 0001-misc-transform-Payment.payment_status-into-a-propert.patch 0001-misc-transform-Payment.payment_status-into-a-propert.patch ajouté
- Statut changé de Nouveau à Solution proposée
- Patch proposed changé de Non à Oui
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
- Bloque Development #49149: utiliser la méthode payment_status d'eopayment quand elle est présente pour valider les transactions en tâche de fond ajouté
Mis à jour par Valentin Deniaud il y a plus de 3 ans
Mouais, en plus d'être pas ouf niveau lisibilité cette approche perd la signature commune de la méthode imposée par la classe Payment, je pense qu'il ne faut pas faire comme ça.
Plutôt implémenter la méthode dans PaymentCommon histoire que tous les backends l'aient, et lui faire retourner None ou une constante par défaut.
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Valentin Deniaud a écrit :
Plutôt implémenter la méthode dans PaymentCommon histoire que tous les backends l'aient, et lui faire retourner None ou une constante par défaut.
Bon ben je vais rajouter un flag alors, ça me paraissait vraiment plus simple de faire comme cela, on fait ça partout sans avoir de signature commune à partager, ça n'a choqué personne (wcs.fields.Field.store_display_value, etc...).
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Mis à jour par Valentin Deniaud il y a plus de 3 ans
Benjamin Dauvergne a écrit :
on fait ça partout sans avoir de signature commune à partager
Ce qui est spécifique ici ça me semble être que Payment est la classe « publique » de eopayment, dont le rôle est de manipuler les backends « privés ». Et donc c'est important que les trucs publics aient une signature fixe.
Valentin Deniaud a écrit :
pas ouf niveau lisibilité
Et je me rends compte que ce qui rend cette histoire cryptique c'est dans common.py
199 payment_status = None
Tu peux peut-être faire sauter ça, en remplaçant par un truc normal genre
def payment_status(self, transaction_id, **kwargs): raise NotImplementedError
et retirer le raise de la méthode dans __init__.py
?
Ça empêche naturellement le raccourci que prenait le premier patch, et dans le deuxième patch has_payment_status deviendrait un truc qui rattrape l'exception. Mais ça m'aiderait probablement de voir ou tout ça va être utilisé, il y a un ticket côté lingo ?
Mis à jour par Benjamin Dauvergne il y a plus de 3 ans
Valentin Deniaud a écrit :
Ça empêche naturellement le raccourci que prenait le premier patch, et dans le deuxième patch has_payment_status deviendrait un truc qui rattrape l'exception.
Tu me demandes de faire ce que ce ticket essaie d'éviter depuis le début, appeler la méthode pour savoir si elle existe.
Mais ça m'aiderait probablement de voir ou tout ça va être utilisé, il y a un ticket côté lingo ?
#49149 le code n'y est pas encore, je dois le réécrire pour ces changements.
Mis à jour par Valentin Deniaud il y a plus de 3 ans
Benjamin Dauvergne a écrit :
Valentin Deniaud a écrit :
Ça empêche naturellement le raccourci que prenait le premier patch, et dans le deuxième patch has_payment_status deviendrait un truc qui rattrape l'exception.
Tu me demandes de faire ce que ce ticket essaie d'éviter depuis le début, appeler la méthode pour savoir si elle existe.
J'ai pas l'impression, je suis d'accord sur le principe du patch qui est pour moi « c'est nul d'avoir une lib qui lève des NotImplementedError qu'il faut ensuite gérer ». Mais à partir du moment où c'est géré en interne ça me paraissait OK (et davantage dans les clous que d'avoir une méthode qui des fois est une méthode, des fois est None).
Mais OK pour ne pas faire comme ça, je reprends, dans le patch :
244 return bool(getattr(self.backend, 'payment_status', False))
C'est bizarre comme ligne, sans bizarrerie ça devrait être
244 return hasattr(self.backend, 'payment_status')
Et on en revient à virer ce payment_status = None
, en ne mettant rien à la place (avec petite adaptation à Payment.payment_status).
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- Fichier 0001-misc-transform-Payment.payment_status-into-a-propert.patch 0001-misc-transform-Payment.payment_status-into-a-propert.patch ajouté
Ok.
Mis à jour par Emmanuel Cazenave il y a environ 3 ans
- Statut changé de Solution proposée à Solution validée
Mis à jour par Benjamin Dauvergne il y a environ 3 ans
- Statut changé de Solution validée à Résolu (à déployer)
commit dbb2301eb54d27e6a1a7f0d99b4a48b083513881 Author: Benjamin Dauvergne <bdauvergne@entrouvert.com> Date: Sat Dec 5 09:16:30 2020 +0100 misc: transform Payment.payment_status into a property (#49148)
Mis à jour par Frédéric Péters il y a environ 3 ans
- Statut changé de Résolu (à déployer) à Solution déployée
misc: transform Payment.payment_status into a property (#49148)