Projet

Général

Profil

Bug #46520

tous les paramètres de backend.request sont forcé en text

Ajouté par Serghei Mihai il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Haut
Assigné à:
Version cible:
-
Début:
10 septembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Cela fait que des booléens comme manual_validation est converti en string. Par conséquence les backends créent des transactions qui doivent être validées manuellement côté chaque système de paiement.
Exemple: Paybox à Strasbourg #46208


Fichiers

Révisions associées

Révision 24459e80 (diff)
Ajouté par Serghei Mihai il y a plus de 3 ans

misc: do not force to text boolean parameters (#46520)

Révision 68242bd4 (diff)
Ajouté par Serghei Mihai il y a plus de 3 ans

misc: do not convert parameters to text (#46520)

Historique

#1

Mis à jour par Serghei Mihai il y a plus de 3 ans

  • Assigné à mis à Serghei Mihai

Le forçage en text est présent depuis un moment: #13624
C'est lors de l'ajout du paramètre manual_validation qui n'a raté quelque chose dans les tests

#2

Mis à jour par Serghei Mihai il y a plus de 3 ans

#3

Mis à jour par Serghei Mihai il y a plus de 3 ans

  • Fichier 0001-misc-do-not-force-to-text-boolean-parameters-46520.patch ajouté

Avec tests plus lisibles.

#4

Mis à jour par Serghei Mihai il y a plus de 3 ans

  • Fichier 0001-misc-do-not-force-to-text-boolean-parameters-46520.patch supprimé
#6

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Et juste virer cette conversion ? On va retomber sur le bug avec les entiers, puis avec les flottants, etc. La validation est désormais faite en amont, #6710, dont d'ailleurs est probablement issu ce bug, j'écrivais sur le salon :

11:46:15 - vdeniaud: avant https://dev.entrouvert.org/issues/6710 (formulaire à la place de jsonfield), le paramètre manual_validation n'était pas renseigné, et du code dans eopayment lui donne sa valeur par défaut, le booléen False. Avec le patch, le formulaire récupère le défaut, et désormais la valeur est spécifiée en amont : elle passe donc par la moulinette qui la convertit en string, ce qui fait met en évidence le bug qui a toujours été là mais qui n'était pas déclenché jusqu'à présent.
11:47:34 - vdeniaud: mieux, le bug n'est pas déclenché au moment où le patch passe en prod, mais à la prochaine validation du formulaire, qui met à jour les paramètres du backend en base
#7

Mis à jour par Serghei Mihai il y a plus de 3 ans

Justement on convertit les flottants, entiers en chaînes.
Virer maintenant la conversion en string me paraît un peu risqué. Il faudrait repasser sur tous les backends et s'assurer que tout fonctionne.

#8

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Serghei Mihai a écrit :

Il faudrait repasser sur tous les backends et s'assurer que tout fonctionne.

À faire de toute façon IMO, il n'y a pas de raison que ce bug « un booléen est convertit en string et le backend attend un booléen » n'ait pas son pendant avec entier/flottant/liste/whatever.

#9

Mis à jour par Serghei Mihai il y a plus de 3 ans

Oui, mais je suis d'avis de ne pas le faire ici, car avec ce patch je souhaite corriger le bug en prod. Bug bloquant pour Strasbourg.

#10

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

On peut vire la conversion, ça n'avait de sens qu'en python2 où on était un peu à la rue entre w.c.s. et combo.

#12

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

  • Statut changé de Solution proposée à Solution validée

Le prochain ticket ce sera de virer le support python2, ça fera plus propre.

#13

Mis à jour par Serghei Mihai il y a plus de 3 ans

J'ai peur de pousser à J moins quelques heures. Ça sera demain.

#14

Mis à jour par Benjamin Dauvergne il y a plus de 3 ans

Serghei Mihai a écrit :

J'ai peur de pousser à J moins quelques heures. Ça sera demain.

Si tu veux pousser le premier patch pour ce soir, histoire de corriger un éventuel souci en prod, je ne vois rien contre.

#15

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Moi je suis d'accord que c'est risqué comme patch. Pour débloquer la situation, un petit patch safe ça serait d'ajouter PaymentBackend à apps/lingo/admin.py (il y a déjà Regie), tu pourrais configurer le truc comme avant avec le jsonfield, et ça resservira peut-être un jour.

#16

Mis à jour par Valentin Deniaud il y a plus de 3 ans

Ah non oui « le premier patch », pourquoi pas.

#17

Mis à jour par Thomas Noël il y a plus de 3 ans

Dans le premier patch (note 5) il y a :

-          transaction_id=transaction, time=time)
+          transaction_id=transaction, time=time, manual_validation=False)

qui ne sert à rien (si on le retire le test passe aussi). Il doit manquer un bout j'imagine ?

#18

Mis à jour par Serghei Mihai il y a plus de 3 ans

Il sert à réproduire l'appel de lingo lors de la création de l'objet payment. Lancer le test sans:

if not isinstance(kwargs[param], bool):
    ...

dans eopayment/__init__.py permet de tomber sur le bogue.

Si dans eopayment/__init__.py::request on ne passe pas le paramètre manual_validation c'est la valeur par défaut de eopayment/paybox.py::request qui est prise en compte et est bien None et le code est bon.

Le souci est que dans @eopayment/__init__.py::request on convertit tout en string.

#19

Mis à jour par Thomas Noël il y a plus de 3 ans

Serghei Mihai a écrit :

Il sert à réproduire l'appel de lingo lors de la création de l'objet payment.

Pigé. Go, donc.

#20

Mis à jour par Serghei Mihai il y a plus de 3 ans

  • Statut changé de Solution validée à En cours
commit 24459e80d0d25a75ec78fbbcfe6758b5399ba768 (HEAD -> master, origin/master, origin/HEAD)
Author: Serghei Mihai <smihai@entrouvert.com>
Date:   Thu Sep 10 11:28:43 2020 +0200

    misc: do not force to text boolean parameters (#46520)
#21

Mis à jour par Serghei Mihai il y a plus de 3 ans

  • Statut changé de En cours à Résolu (à déployer)
commit 68242bd4355b15c53921611b7164086c2ff06363 (HEAD -> master, origin/master, origin/HEAD)
Author: Serghei Mihai <smihai@entrouvert.com>
Date:   Thu Sep 10 11:28:43 2020 +0200

    misc: do not convert parameters to text (#46520)
#22

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF