python openerp

subplot python



el elemento#0 de la secuencia de actualizaciĆ³n del diccionario tiene una longitud 3; Se requiere 2 (2)

Este error surgió porque intentaba actualizar el objeto dict utilizando una estructura de secuencia ( list o tuple ) incorrecta.

cash_id.create(cr, uid, lines,context=None) intentando convertir lines en el objeto dict:

(0, 0, { ''name'': l.name, ''date'': l.date, ''amount'': l.amount, ''type'': l.type, ''statement_id'': exp.statement_id.id, ''account_id'': l.account_id.id, ''account_analytic_id'': l.analytic_account_id.id, ''ref'': l.ref, ''note'': l.note, ''company_id'': l.company_id.id })

Elimine el segundo cero de esta tupla para convertirlo correctamente en un objeto dict.

Para probarlo tu mismo, prueba esto en la cáscara de Python:

>>> l=[(0,0,{''h'':88})] >>> a={} >>> a.update(l) Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> a.update(l) ValueError: dictionary update sequence element #0 has length 3; 2 is required >>> l=[(0,{''h'':88})] >>> a.update(l) >>>

Quiero agregar líneas al objeto account.bank.statement.line través de otro objeto, pero recibo este error: "dictionary update sequence element #0 has length 3; 2 is required"

def action_account_line_create(self, cr, uid, ids): res = False cash_id = self.pool.get(''account.bank.statement.line'') for exp in self.browse(cr, uid, ids): company_id = exp.company_id.id #statement_id = exp.statement_id.id lines = [] for l in exp.line_ids: lines.append((0, 0, { ''name'': l.name, ''date'': l.date, ''amount'': l.amount, ''type'': l.type, ''statement_id'': exp.statement_id.id, ''account_id'': l.account_id.id, ''account_analytic_id'': l.analytic_account_id.id, ''ref'': l.ref, ''note'': l.note, ''company_id'': l.company_id.id })) inv_id = cash_id.create(cr, uid, lines,context=None) res = inv_id return res

Lo cambié en eso pero luego me encontré con este error:

File "C:/Program Files (x86)/OpenERP 6.1-20121029-003136/Server/server/./openerp/workflow/wkf_expr.py", line 68, in execute File "C:/Program Files (x86)/OpenERP 6.1-20121029-003136/Server/server/./openerp/workflow/wkf_expr.py", line 58, in _eval_expr File "C:/Program Files (x86)/OpenERP 6.1-20121029-003136/Server/server/./openerp/tools/safe_eval.py", line 241, in safe_eval File "C:/Program Files (x86)/OpenERP 6.1-20121029-003136/Server/server/./openerp/tools/safe_eval.py", line 108, in test_expr File "<string>", line 0 ^ SyntaxError: unexpected EOF while parsing

Código:

def action_account_line_create(self, cr, uid, ids, context=None): res = False cash_id = self.pool.get(''account.bank.statement.line'') for exp in self.browse(cr, uid, ids): company_id = exp.company_id.id lines = [] for l in exp.line_ids: res = cash_id.create ( cr, uid, { ''name'': l.name, ''date'': l.date, ''amount'': l.amount, ''type'': l.type, ''statement_id'': exp.statement_id.id, ''account_id'': l.account_id.id, ''account_analytic_id'': l.analytic_account_id.id, ''ref'': l.ref, ''note'': l.note, ''company_id'': l.company_id.id }, context=None) return res


Recibía este error cuando estaba actualizando el diccionario con la sintaxis incorrecta:

lineItem.values.update({attribute,value})

en lugar de

lineItem.values.update({attribute:value})