Salve a tutti,
sto riscontrando un problema con la funzione write in un modulo che ho realizzato, e non riesco a capire dove sbaglio; per favore potreste dare un'occhiata per mettermi sulla buona strada ?
Nel file PY del nuovo modulo ho creato le due funzioni "create" e "write" per verificare alcuni campi prima di eseguire le operazioni di salvataggio; ma mentre la funzione create funziona regolarmente la write non va .....
def create(self, cr, uid, vals, context=None):
if (vals['campo1']+vals['campo2']) != 100:
raise osv.except_osv(_('Attenzione!'), _('La somma dei campi deve essere uguale a 100!'))
return False
return super(mia_tabella, self).create(cr, uid, vals, context=context)
def write(self, cr, uid, ids, vals, context=None):
p0=vals.get('campo1', 0)
p1=vals.get('campo2', 0)
ptot = p0+p1
if (p0+p1) != 100:
raise osv.except_osv(_('Attenzione!'), _('La somma dei campi deve essere uguale a 100! %s' %ptot))
return False
return super(mia_tabella, self).write(cr, uid, ids, vals, context=context)
Da quanto ho potuto capire sembra che nella funzione write i valori del record in uso della tabella non vengano passati e pertanto il risultato è sempre zero.
se all'interno della write provo le istruzioni:
def write(self, cr, uid, ids, vals, context=None):
if not 'campo1' in vals:
raise osv.except_osv(_('Attenzione!'), _('Errore nel campo1'))
return False
viene eseguita l'eccezione per qualsiasi valore di campo1
Grazie in anticipo.