> Cette syntaxe est assez veille, on utilise depuis plus de 2 ans une > syntaxe Active Record: > > with Transaction().start('test_lmds_tryton', 0): > pool = Pool(TRYTON_DATABASE) > pool.init() > Product = pool.get('product.product') > product = Product(id) > product.name > ...
Ok, en revanche j’ai toujours le même problème. En fait j’essaye d’accéder à product.name dans mon template chameleon et j’ai cette erreur : return inst.__getattr__(self.name) File "/home/fabien/DEV/test-lmds/lib/python2.7/site-packages/trytond/modules/product/product.py", line 174, in __getattr__ return getattr(self.template, name) File "/home/fabien/DEV/test-lmds/lib/python2.7/site-packages/trytond/model/fields/field.py", line 213, in __get__ return inst.__getattr__(self.name) File "/home/fabien/DEV/test-lmds/lib/python2.7/site-packages/trytond/modules/product/product.py", line 171, in __getattr__ return super(Product, self).__getattr__(name) File "/home/fabien/DEV/test-lmds/lib/python2.7/site-packages/trytond/model/modelstorage.py", line 1168, in __getattr__ if self.id < 0: File "/home/fabien/DEV/test-lmds/lib/python2.7/site-packages/trytond/model/fields/field.py", line 213, in __get__ return inst.__getattr__(self.name) File "/home/fabien/DEV/test-lmds/lib/python2.7/site-packages/trytond/modules/product/product.py", line 171, in __getattr__ return super(Product, self).__getattr__(name) File "/home/fabien/DEV/test-lmds/lib/python2.7/site-packages/trytond/model/modelstorage.py", line 1166, in __getattr__ return super(ModelStorage, self).__getattr__(name) File "/home/fabien/DEV/test-lmds/lib/python2.7/site-packages/trytond/model/model.py", line 434, in __getattr__ if name == 'id': RuntimeError: maximum recursion depth exceeded in cmp Mon code : @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). J’ai essayé de créer un décorateur contenant le contexte manager pour décorer ma vue mais ça ne fonctionne pas mieux. Dans l’exemple pour Django ça a l’air pourtant de fonctionner, ça doit être un certain de fonctionnement de Pyramid qui m’échappe.