widget one2many on webclient not working.

Asked by gustavo palminha

Hello.
I'm running V.5.0.10 and i was creating a new module but it keeps throwing an error.

My py file:

from mx import DateTime
import time
from osv import fields, osv

class hr_employee(osv.osv):
    _name='hr.employee'
    _inherit='hr.employee'
    _columns = {
        'avaliacao_ids': fields.one2many('hr.employee.avaliacao.linha','employee_id','Linha de Avaliacoes'),
        'foto': fields.binary('Foto',help="Tipo passe, largura = 100px e altura = 110px"),
        'cv_doc':fields.binary('CV em formato DOC',help="Seleccionar o ficheiro DOC. Se ao fazer download o Browser nao reconhecer a extensao/nome do ficheiro, basta ao salvar o ficheiro, acrescentar a extensao em falta."),
        'cv_pdf':fields.binary('CV em formato PDF',help="Seleccionar o ficheiro PDF. Se ao fazer download o Browser nao reconhecer a extensao/nome do ficheiro, basta ao salvar o ficheiro, acrescentar a extensao em falta."),
        'valor_dia': fields.float('Valor ao dia', help="Colocar o valor indicado e não misturar com o valor pedido pelos outros campos. Se nao se aplicar, deixar o valor pre-definido."),
        'valor_alimentacao': fields.float('Valor para alimentacao', help="Colocar o valor indicado e não misturar com o valor pedido pelos outros campos. Se nao se aplicar, deixar o valor pre-definido."),
        'valor_estadia': fields.float('Valor para estadia', help="Colocar o valor indicado e não misturar com o valor pedido pelos outros campos. Se nao se aplicar, deixar o valor pre-definido."),
        'valor_deslocacao': fields.float('Valor para a deslocacao', help="Colocar o valor indicado e não misturar com o valor pedido pelos outros campos. Se nao se aplicar, deixar o valor pre-definido."),
        'entrevista_obsevacoes': fields.text('Observacoes', help="Colocar algo como por exemplo: Disponibilidade ao FDS, entre outros aspectos importantes.")
    }
    _defaults = {
        'valor_dia': lambda *a: -1.0,
        'valor_alimentacao': lambda *a: -1.0,
        'valor_estadia': lambda *a: -1.0,
        'valor_deslocacao': lambda *a: -1.0
    }
hr_employee()

class hr_employee_avaliacao_linha(osv.osv):
    _name = 'hr.employee.avaliacao.linha'
    _description = "Linha de Avaliacao de RH"
    _columns = {
        'employee_id': fields.many2one('hr.employee', 'Empregado', ondelete='cascade'),
        'ano':fields.integer('Ano', size=4,required=True),
        'periodo': fields.selection([
            ('1º Semestre', '2º Semestre','Anual')],
            'Periodo', help="Escolher uma das opções disponíveis."),
        'nota': fields.float('Nota',required=True, help="Entre 1.0 a 5.0"),
        'observacoes': fields.char('Periodo',size=250,required=True)
   }
    _defaults = {
        'ano': lambda *a: time.strftime('%Y'),
        'periodo': lambda *a: '1º Semestre',
        'nota' : lambda *a: 3.0
    }
hr_employee_avaliacao_linha()

My xml view file:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
    <data>
        <record model="ir.ui.view" id="hr_employee_form_bio3_inherit">
            <field name="name">hr.employee.form.bio3.inherit</field>
            <field name="model">hr.employee</field>
            <field name="type">form</field>
            <field name="inherit_id" ref="hr.view_employee_form"/>
            <field name="arch" type="xml">
                <group position="replace">
                    <group col="1" colspan="1" rowspan="2">
                        <field height="110" name="foto" widget="image" width="100"/>
                        <field name="name" select="1"/>
                        <field name="active" select="1"/>
                        <field name="company_id"/>
                        <field name="user_id"/>
                        <field name="cv_doc" widget="binary"/>
                        <field name="cv_pdf" widget="binary"/>
                    </group>
                </group>
            </field>
        </record>
        <record model="ir.ui.view" id="hr_employee_form_bio3_form2_inherit">
            <field name="name">hr.employee.form.bio3.form2.inherit</field>
            <field name="model">hr.employee</field>
            <field name="type">form</field>
            <field name="inherit_id" ref="hr.view_employee_form"/>
            <field name="arch" type="xml">
                <notebook position="inside">
                    <page string="Avaliacao">
                        <field colspan="4" name="avaliacao_ids" widget="one2many_list" nolabel="1">
                            <form string="Avaliacao">
                                <field name="ano" select="2"/>
                                <field name="periodo" select="2"/>
                                <field name="nota" select="2"/>
                                <field name="observacoes" select="1"/>
                            </form>
                        </field>
                    </page>
                </notebook>
            </field>
        </record>
        <record model="ir.ui.view" id="view_hr_employee_avaliacao_tree">
            <field name="name">hr.employee.avaliacao.tree</field>
            <field name="model">hr.employee.avaliacao.linha</field>
            <field name="type">tree</field>
            <field name="arch" type="xml">
                <tree string="Avaliacoes">
                    <field name="ano"/>
                    <field name="periodo"/>
                    <field name="nota"/>
                    <field name="observacoes"/>
                </tree>
            </field>
        </record>
        <record model="ir.ui.view" id="hr_employee_form_bio3_form3_inherit">
            <field name="name">hr.employee.form.bio3.form3.inherit</field>
            <field name="model">hr.employee</field>
            <field name="type">form</field>
            <field name="inherit_id" ref="hr.view_employee_form"/>
            <field name="arch" type="xml">
                <notebook position="inside">
                    <page string="Entrevista">
                        <field name="valor_dia" select="1"/>
                        <field name="valor_alimentacao" select="1"/>
                        <field name="valor_estadia" select="1"/>
                        <field name="valor_deslocacao" select="1"/>
                        <newline/>
                        <field colspan="4" name="entrevista_obsevacoes" select="1"/>
                    </page>
                </notebook>
            </field>
        </record>
    </data>
</openerp>

The module is correctly imported and installed without errors, but when trying access the view that should contain the widget like the avaliacao_ids, OpenERP will throw the following:

  File "service\web_services.pyo", line 576, in execute
  File "osv\osv.pyo", line 58, in wrapper
  File "osv\osv.pyo", line 119, in execute
  File "osv\osv.pyo", line 111, in execute_cr
  File "osv\orm.pyo", line 1369, in fields_view_get
  File "osv\orm.pyo", line 1118, in __view_look_dom_arch
  File "osv\orm.pyo", line 1113, in __view_look_dom
  File "osv\orm.pyo", line 1113, in __view_look_dom
  File "osv\orm.pyo", line 1113, in __view_look_dom
  File "osv\orm.pyo", line 1061, in __view_look_dom
  File "osv\orm.pyo", line 1156, in __view_look_dom_arch
  File "osv\orm.pyo", line 2214, in fields_get
  File "osv\orm.pyo", line 1002, in fields_get
ValueError: too many values to unpack

However if i remove the part of the view correcponding to the avaliacao_ids (the widget), all other views work well, but i do not know how any more ways to fix it, even after looking into other modules source code.

In case of any suggestion, ill appreciate it :)

Regards.

Question information

Language:
English Edit question
Status:
Solved
For:
OpenERP Edit question
Assignee:
No assignee Edit question
Solved by:
gustavo palminha
Solved:
Last query:
Last reply:
Revision history for this message
gustavo palminha (gustavopalminha) said :
#1

Found the problem.
I've corrected some minor errors, but the main problem was that the selection field ive created is not correct (each element has to be a pair)!

'periodo': fields.selection([
('1º Semestre', '2º Semestre','Anual')],
'Periodo', help="Escolher uma das opções disponíveis."),

After correcting this it, all worked.

Regards.