Como usar o metodo WRITE

Estou desenvolvendo um código, ja consigo excluir a venda, e o valor do produto voltar ao stok, só que agora estou tentando editar o valor da venda só que me não estou conseguindo aki a source.

from osv import osv, fields
import pooler

class sig_sig(osv.osv):
    _name = 'sig.sig'
    _columns = {
    
        'name' : fields.char('Nome',size=40),
        'cidade':fields.char("Cidade",size=40,required=True),
        'bairro': fields.char("Bairro",size=40,required=True),
        'numero':fields.integer('Numero',required=True),
        'idade': fields.integer('Idade',required=True),
        'empresa':fields.char('Empresa',size=40,required=True),
        'genero': fields.selection([('',''),('h','Homem'),('m','Mulher')], 'Genero'),
       
    }
sig_sig()

class produto_produto(osv.osv):
    _name = 'produto.produto'
    _columns = {
    
        'data' :fields.date('Data'),
        'codigo':fields.integer("Codigo",required=True),
        'name': fields.char('Mercadoria',size=30,required=True),
        'valor':fields.float('Valor',required=True),
        'quantidade':fields.integer('Quantidade',required=True),
       
    }

produto_produto()

class venda_venda(osv.osv):
    _name = 'venda.venda'
    _columns = {
    
    'name' : fields.char('Nome',size=40),
    'cliente_id':fields.many2one("sig.sig","Clientes",help='Selecione um cliente'),
    'produto_id':fields.many2one("produto.produto","Mercadorias",required=True),
    'quantidade':fields.integer("Quantidade",required=True),
    'valor':fields.float("Valor",required=True),
    'data':fields.date('data',required=True),
    }

    def create(self, cr, uid, vals, context=None):
        item=pooler.get_pool(cr.dbname).get('produto.produto').read(cr, uid, vals['produto_id'], ['quantidade', 0])
        qtd=item['quantidade']-vals['quantidade']
        item=pooler.get_pool(cr.dbname).get('produto.produto').write(cr, uid, vals['produto_id'], {'quantidade':qtd}, context)
   
        result = super(venda_venda,self).create(cr, uid, vals, context)
        return result

 
    def unlink(self, cr ,uid, ids,*args, **kwargs):
        itens=pooler.get_pool(cr.dbname).get('venda.venda').read(cr, uid, ids, ['quantidade','produto_id'])
        for item in itens:
        produto=pooler.get_pool(cr.dbname).get('produto.produto').read(cr, uid, item['produto_id'][0], ['quantidade'])
            qtd=produto['quantidade']+item['quantidade']
            salv=pooler.get_pool(cr.dbname).get('produto.produto').write(cr, uid, item['produto_id'][0], {'quantidade':qtd})
      
        return super(venda_venda, self).unlink(cr, uid, ids,*args, **kwargs)

 
    def write(self, cr, uid, ids, vals, context=None):
        itens=pooler.get_pool(cr.dbname).get('venda.venda').read(cr, uid, ids, ['quantidade','produto_id'])
        for item in itens:
            produto=pooler.get_pool(cr.dbname).get('produto.produto').read(cr, uid, item['produto_id'][0], ['quantidade'])
            qtd=produto['quantidade']+item['quantidade']-item['quantidade']
            salv=pooler.get_pool(cr.dbname).get('produto.produto').write(cr, uid, item['produto_id'][0], {'quantidade':qtd})

        return super(venda_venda,self).write(cr, uid, vals, context)
       
venda_venda()

Alguem me ajuda a montar o metodo write?