flask_tryton web portal : problème lié aux transactions en lecture seule.

49 views
Skip to first unread message

guile520

unread,
Sep 20, 2017, 3:35:05 AM9/20/17
to tryton-fr
Bonjour.

Mon projet de portail client (app flask_tryton) avec paiement paypal avance:
le web user créé dans la base de données tryton peut se connecter (flask session) et voir ses commandes/factures (imprimer).

"By default transactions are readonly except for PUT, POST, DELETE and PATCH request methods."

Pourtant j'obtiens l'erreur suivante lors de l'appel à UserSession::get_user() du module tryton web_user en cas d'expiration. (si la "session" a expiré, UserSession::get_user() la supprime)

InternalError: cannot execute DELETE in a read-only transaction

Comment puis-je régler ce problème ?


Passé ce détail, il me restera à intégrer le paiement paypal via un bouton. (déjà utilisé l'api paypal php)
J'ai trouvé ce projet qui m'a l'air assez simple à mettre en place : https://github.com/jdiez17/flask-paypal/blob/master/app.py

Christophe (.net)

unread,
Sep 20, 2017, 3:50:27 AM9/20/17
to tryt...@googlegroups.com
Bonjour,

Je suis intéressé par ce type de projet, est-ce que le projet est
accessible quelque part ? Avez vous besoins de contributeurs ?

Cordialement
--
Christophe CRIER
Adiczion - http://adiczion.com

Cédric Krier

unread,
Sep 20, 2017, 5:05:05 AM9/20/17
to tryton-fr
On 2017-09-19 17:48, guile520 wrote:
> Bonjour.
>
> Mon projet de portail client (app flask_tryton) avec paiement paypal avance:
> le web user créé dans la base de données tryton peut se connecter (flask
> session) et voir ses commandes/factures (imprimer).
>
> sur la page https://pypi.python.org/pypi/flask_tryton :
> "By default transactions are readonly except for PUT, POST, DELETE and
> PATCH request methods."
>
> Pourtant j'obtiens l'erreur suivante lors de l'appel à
> UserSession::get_user() du module tryton web_user en cas d'expiration. (si
> la "session" a expiré, UserSession::get_user() la supprime)
>
> InternalError: cannot execute DELETE in a read-only transaction
>
> Comment puis-je régler ce problème ?

En effet, c'est un problème. Il faut utiliser une transaction
non-readonly pour les cas où get_user serait appelé.
Je pense que get_user ne devrait pas supprimer les veilles sessions s'il
est dans une transaction readonly: https://bugs.tryton.org/issue6769

--
Cédric Krier - B2CK SPRL
Email/Jabber: cedric...@b2ck.com
Tel: +32 472 54 46 59
Website: http://www.b2ck.com/

guile520

unread,
Sep 20, 2017, 9:05:07 AM9/20/17
to tryton-fr
Merci pour votre réponse. 
https://bugs.tryton.org/issue6769
"It should not be overload the server because the 'add' method delete older session before creating a new one."
j'ai créé un module installé sur la bd tryton, surcharger get_user ne posera pas de problème. de toute manière, c'est la session flask qui prime et sur laquelle je peux agir.

"Il faut utiliser une transaction non-readonly pour les cas où get_user serait appelé. "

le paiement posera peut-être ce problème également, comment changer le paramètre readonly de flask_tryton ?
Directement ligne 50 : with Transaction().start(database, user, readonly=True): ?

Cédric Krier

unread,
Sep 20, 2017, 9:45:05 AM9/20/17
to tryton-fr
On 2017-09-20 04:34, guile520 wrote:
> Merci pour votre réponse.
>
> > https://bugs.tryton.org/issue6769 :
> >
> > "It should not be overload the server because the 'add' method delete older session before creating a new one."
> >
> > j'ai créé un module installé sur la bd tryton, surcharger get_user ne
> posera pas de problème. de toute manière, c'est la session flask qui prime
> et sur laquelle je peux agir.

Si c'est une session Flask qui est utilisée pourquoi en créer une dans
Tryton ?

> "Il faut utiliser une transaction non-readonly pour les cas où get_user
> serait appelé. "
>
> le paiement posera peut-être ce problème également, comment changer le
> paramètre readonly de flask_tryton ?

Le decorator "transaction" a un paramètre 'readonly'.

guile520

unread,
Sep 20, 2017, 10:49:49 AM9/20/17
to tryton-fr
"Si c'est une session Flask qui est utilisée pourquoi en créer une dans
Tryton ?" 

Vous avez raison. A vrai dire, je ne comprends pas où est créée la session persistente dans web_user. Vous utilisez un objet que vous créez (db) et mettez à jour avec add ?
en php, il suffit d'appeler session_start puis d'utiliser l'objet de session. flask session fonctionne de la même manière.
 
"Le decorator "transaction" a un paramètre 'readonly'."

Merci ! 

Cédric Krier

unread,
Sep 20, 2017, 12:35:07 PM9/20/17
to tryton-fr
On 2017-09-20 07:40, guile520 wrote:
>
> >
> > "Si c'est une session Flask qui est utilisée pourquoi en créer une dans
> > Tryton ?"
> >
>
> Vous avez raison. A vrai dire, je ne comprends pas où est créée la session
> persistente dans web_user.

C'est quand on appel 'new_session'.

> Vous utilisez un objet que vous créez (db) et
> mettez à jour avec add ?

Non, ce n'est pas un session qui stock des informations. C'est juste une
session qui authentifie.

> en php, il suffit d'appeler session_start puis d'utiliser l'objet de
> session. flask session fonctionne de la même manière.

guile520

unread,
Sep 20, 2017, 1:08:19 PM9/20/17
to tryton-fr
J'utilise cette authentification, vais étudier plus avant web_user pour rendre le code plus clean.
Le projet "paypal" dont j'ai collé le lien fonctionne, il me reste à créer le paiement dans la bd tryton pour que la facture soit considérée comme payée.
Les objets ressemblent à ceux d'odoo 8, (lignes de paiement, paiements, mouvements et factures) je devrais m'en sortir.
la fonction "get_amount_to_pay" me plaît; le calcul du solde des factures dans odoo, un grand moment ...

Merci de m'avoir aidé !

Cordialement.

Cédric Krier

unread,
Sep 20, 2017, 2:40:06 PM9/20/17
to tryton-fr
On 2017-09-20 10:08, guile520 wrote:
>
> >
> > J'utilise cette authentification, vais étudier plus avant web_user pour
> > rendre le code plus clean.
>
> Le projet "paypal" dont j'ai collé le lien fonctionne, il me reste à créer
> le paiement dans la bd tryton pour que la facture soit considérée comme
> payée.
> Les objets ressemblent à ceux d'odoo 8, (lignes de paiement, paiements,
> mouvements et factures) je devrais m'en sortir.

Regardes du côté de account_payment_stripe ça ne devrait pas être trop
différent pour Paypal.
Reply all
Reply to author
Forward
0 new messages