On 2015-07-31 07:55, Fabien Castarède wrote:
> @view_config(name='view', permission='view',
>                  renderer='poc:templates/custom-content-default.pt')
>     def default_view(self):
>         with Transaction().start(TRYTON_DATABASE, TRYTON_USER):
>             tryton_pool.init()
>             Product = tryton_pool.get('product.product')
>             product = Product(self.context.custom_attribute)
> 
>         return {
>             'product': product,
>         }
> 
> En revanche, lorsque j’applique à la lettre l’exemple dans le wiki 
> (https://code.google.com/p/tryton/wiki/TrytonPyramid) ça fonctionne. Je pense 
> que je dois être en dehors du context manager lorsque j’appelle l’attribut 
> name à partir de mon template (même si j’indente le return dans le with).

Ha oui, ça ne peut pas marcher. La transaction doit toujours être active
lorsqu'on accède à une instance.

> J’ai essayé de créer un décorateur contenant le contexte manager pour décorer 
> ma vue mais ça ne fonctionne pas mieux.

Il faut que ce soit toujours la même transaction.

> Dans l’exemple pour Django ça a l’air pourtant de fonctionner, ça doit être 
> un certain de fonctionnement de Pyramid qui m’échappe.

Je ne connais pas le fonctionnement interne de Pyramid mais il devrait y
avoir un endroit pluggable pour démarrer une transaction à chaque
requête.

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

Répondre à