Ho l'esigenza di creare una function da mostrare in una tree che sia il più possibile dinamica poichè deve adattarsi a diversi parametri volta per volta in base a ciò che il db contiene.
Avevo pensato di utilizzare fields_view_get e di passare alla suddetta function di volta in volta un context contenente i parametri che mi interessano.
Sino ad ora ho scritto questo per fare delle prove:
class product_product(osv.osv):
_name = 'product.product'
_inherit = 'product.product'
def _conta_elementi(self, cr, uid, ids, name, arg, context=None):
res = {}
for p_id in ids:
res[p_id] = 1
return res
_columns = {
'conta_elementi' : fields.function(_conta_elementi, method=True, type='integer', store=False),
}
def fields_view_get(self, cr, uid, view_id=None, view_type='tree', context=None, toolbar=False, submenu=False):
res = super(product_product, self).fields_view_get(cr, uid, view_id=view_id, view_type=view_type, context=context, toolbar=toolbar,submenu=False)
for a in res:
print a
if a == 'fields':
res[a]['conta_elementi'] = {'string': u'Conta elementi'}
if a == 'arch':
res[a] = res[a].replace('<field name="name" modifiers="{"required": true}"/>', '<field name="name" modifiers="{"required": true}"/><field name="conta_elementi" modifiers="{}"/><field name="conta_elementi" modifiers="{}"/><field name="conta_elementi" context="{'prova':'aaaaaa'}" modifiers="{}"/>')
return res
product_product()
Il campo viene mostrato bene nella tree dei prodotti ma ora vorrei sapere come posso fare (nella funzione fields_view_get) a passare un context che possa leggere in _conta_elementi.