Bug #9854
Erreur lors de l'appel de l'url de retour
0%
Description
Arrivé sur la recette de Fondettes suite au ticket #9840.
Request Method: GET Request URL: https://citoyen-fondettes.test.entrouvert.org/lingo/return/1/?vads_amount=4242&vads_auth_mode=MARK&vads_auth_number=&vads_auth_result=&vads_capture_delay=0&vads_card_brand=&vads_card_number=&vads_payment_certificate=&vads_ctx_mode=TEST&vads_currency=978&vads_effective_amount=&vads_site_id=57406901&vads_trans_date=20160203092845&vads_trans_id=801480&vads_validation_mode=0&vads_version=V2&vads_warranty_result=&vads_payment_src=EC&vads_cust_email=smihai%40entrouvert.com&vads_cust_country=FR&vads_contrib=eopayment&vads_contract_used=&vads_trans_status=ABANDONED&vads_pays_ip=FR&vads_presentation_date=20160203092845&vads_threeds_enrolled=&vads_threeds_cavv=&vads_threeds_eci=&vads_threeds_xid=&vads_threeds_cavvAlgorithm=&vads_threeds_status=&vads_threeds_sign_valid=&vads_threeds_error_code=&vads_threeds_exit_status=&vads_result=17&vads_extra_result=&vads_card_country=&vads_language=fr&vads_action_mode=INTERACTIVE&vads_payment_config=SINGLE&vads_page_action=PAYMENT&signature=2d4f2fb0dc8503748a49acdd6fe80c9a910566ab& Traceback: File "/usr/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 111. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in view 69. return self.dispatch(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/django/views/generic/base.py" in dispatch 87. return handler(request, *args, **kwargs) File "/usr/lib/python2.7/dist-packages/combo/apps/lingo/views.py" in get 243. 'item_id': transaction.items[0].id})) Exception Type: TypeError at /lingo/return/1/ Exception Value: 'ManyRelatedManager' object does not support indexing
Fichiers
Révisions associées
Historique
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
Pourquoi on renvoie sur une la vue du premier item, faudrait revenir sur la page combo d'où le paiement est parti, non ?
En plus le template de la vue ItemView me semble incomplet il n'étant aucun template de base, etc.. c'est très bizarre.
Le code juste après est faux aussi:
if transaction.remote_items: # redirect to first transaction remote item view item = transaction.remote_items.split(',')[0] return HttpResponseRedirect(reverse('view-item', kwargs={'regie_id': regie.pk, 'item_id': item.id}))
item me semble être une chaîne il n'a donc pas d'attribut id
.
Mis à jour par Frédéric Péters il y a environ 8 ans
- Assigné à mis à Serghei Mihai (congés, retour 15/05)
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 8 ans
- Statut changé de Nouveau à En cours
- Patch proposed changé de Oui à Non
Benjamin Dauvergne a écrit :
Pourquoi on renvoie sur une la vue du premier item, faudrait revenir sur la page combo d'où le paiement est parti, non ?
Oui, c'est logique mais au moment du callback on ne sait pas sur quelle page se trouve la cellule "panier" qui a declenché le paiement.
En plus le template de la vue ItemView me semble incomplet il n'étant aucun template de base, etc.. c'est très bizarre.
Parce qu'on est parti du principe que les details d'un item(facture) s'affichent dans une popup.
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
Serghei Mihai a écrit :
Benjamin Dauvergne a écrit :
Pourquoi on renvoie sur une la vue du premier item, faudrait revenir sur la page combo d'où le paiement est parti, non ?
Oui, c'est logique mais au moment du callback on ne sait pas sur quelle page se trouve la cellule "panier" qui a declenché le paiement.
Il faut noter ça en session associé au numéro de transaction pour éviter les collisions:
request.session.setdefault('lingo_next_url', {})[transaction_id] = request.build_absolute_uri();
et dans la vue de callback on récupère ce next_url en fonction du transaction_id et on revient dessus, sinon on revient à l'accueil.
En plus le template de la vue ItemView me semble incomplet il n'étant aucun template de base, etc.. c'est très bizarre.
Parce qu'on est parti du principe que les details d'un item(facture) s'affichent dans une popup.
Ok, si c'est toujours le cas je comprends.
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 8 ans
- Fichier 0001-lingo-return-url-redirects-to-the-page-that-initiate.patch 0001-lingo-return-url-redirects-to-the-page-that-initiate.patch ajouté
- Patch proposed changé de Non à Oui
Mis à jour par Frédéric Péters il y a environ 8 ans
referer = request.META.get('HTTP_REFERER')
Plutôt qu'utiliser le bien fragile entête Referer je préférerais qu'on inscrive dans un champ caché du formulaire posté l'URL de retour désirée.
Mis à jour par Serghei Mihai (congés, retour 15/05) il y a environ 8 ans
- Fichier 0001-lingo-return-url-redirects-to-the-page-that-initiate.patch 0001-lingo-return-url-redirects-to-the-page-that-initiate.patch ajouté
Ok, redirection vers la page de la cellule
Mis à jour par Frédéric Péters il y a environ 8 ans
- Statut changé de En cours à Résolu (à déployer)
Poussé ainsi parce que j'ai des tests corrects à faire pour #9910 et qu'ils annonçaient cette erreur.
commit 967a9c0681bc72024233aad4e32627391960b55d Author: Serghei Mihai <smihai@entrouvert.com> Date: Wed Feb 3 10:49:47 2016 +0100 lingo: return url redirects to the page that initiated the payment (#9854)
Mis à jour par Frédéric Péters il y a presque 8 ans
- Statut changé de Résolu (à déployer) à Fermé
lingo: return url redirects to the page that initiated the payment (#9854)