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/