view inheritance not working properly in OpenERP 7.0

Asked by Christian Alvarez Ponce

I'm working with OpenERP version 7.0-20130305-002149
in Ubuntu 10.04
In a cleand DataBase I install sale_stock module, then I create a this simple test view to try to add a new field after 'shipped' field

<?xml version="1.0" encoding="utf-8"?>
<openerp>
 <data>
  <record id="test view" model="ir.ui.view">
   <field name="name">sale.order.form</field>
   <field name="model">sale.order</field>
   <field name="type">form</field>
   <field name="inherit_id" ref="sale.view_order_form" />
   <field name="arch" type="xml">
    <data>
      <field name="shipped" position="after">
       <separator string="new item test" colspan="4"/>
      </field>
    </data>
   </field>
  </record>
 </data>
</openerp>

'shipped' field is added by sale_stock module (sale_stock_view.xml, record id = view_order_form_inherit) that inherit from sale.view_order_form

when I try to install the test view I get the following error
_____________________________________________________
2013-03-09 15:12:07,063 8374 ERROR 70a openerp.addons.base.ir.ir_ui_view: Can't render view aaa.test view for model: sale.order
Traceback (most recent call last):
  File "/opt/openerp70/server/openerp/addons/base/ir/ir_ui_view.py", line 125, in _check_render_view
    fvg = self.pool.get(view.model).fields_view_get(cr, uid, view_id=view.id, view_type=view.type, context=context)
  File "/opt/openerp70/server/openerp/osv/orm.py", line 2235, in fields_view_get
    arch=apply_view_inheritance(cr, user, source, sql_res['id']),
  File "/opt/openerp70/server/openerp/osv/orm.py", line 2193, in apply_view_inheritance
    source = apply_inheritance_specs(source, view_arch, view_id)
  File "/opt/openerp70/server/openerp/osv/orm.py", line 2177, in apply_inheritance_specs
    raise_view_error("Element '%s' not found in parent view '%%(parent_xml_id)s'" % tag, inherit_id)
  File "/opt/openerp70/server/openerp/osv/orm.py", line 2070, in raise_view_error
    % (child_view.xml_id, self._name, error_msg))
AttributeError: View definition error for inherited view 'aaa.test view' on model 'sale.order': Element '<field name="shipped">' not found in parent view 'sale.view_order_form'
2013-03-09 15:12:07,075 8374 ERROR 70a openerp.tools.convert: Parse error in /opt/openerp70/addons/cybercia/modules/aaa/sale_view.xml:5:
<record id="test view" model="ir.ui.view">
   <field name="name">sale.order.form</field>
   <field name="model">sale.order</field>
   <field name="type">form</field>
   <field name="inherit_id" ref="sale.view_order_form"/>
   <field name="arch" type="xml">
    <data>
      <field name="shipped" position="after">
       <separator string="new item test" colspan="4"/>
      </field>
    </data>
   </field>
  </record>
Traceback (most recent call last):
  File "/opt/openerp70/server/openerp/tools/convert.py", line 847, in parse
    self._tags[rec.tag](self.cr, rec, n)
  File "/opt/openerp70/server/openerp/tools/convert.py", line 814, in _tag_record
    id = self.pool.get('ir.model.data')._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
  File "/opt/openerp70/server/openerp/addons/base/ir/ir_model.py", line 937, in _update
    model_obj.write(cr, uid, [res_id], values, context=context)
  File "/opt/openerp70/server/openerp/addons/base/ir/ir_ui_view.py", line 207, in write
    return super(view, self).write(cr, uid, ids, vals, context)
  File "/opt/openerp70/server/openerp/osv/orm.py", line 4201, in write
    self._validate(cr, user, ids, context)
  File "/opt/openerp70/server/openerp/osv/orm.py", line 1544, in _validate
    raise except_orm('ValidateError', '\n'.join(error_msgs))
except_orm: ('ValidateError', u'Error occurred while validating the field(s) arch: Invalid XML for View Architecture!')
2013-03-09 15:12:07,076 8374 ERROR 70a openerp: Failed to initialize database `70a`.
Traceback (most recent call last):
  File "/opt/openerp70/server/openerp/cli/server.py", line 98, in preload_registry
    db, registry = openerp.pooler.get_db_and_pool(dbname,update_module=update_module)
  File "/opt/openerp70/server/openerp/pooler.py", line 33, in get_db_and_pool
    registry = RegistryManager.get(db_name, force_demo, status, update_module)
  File "/opt/openerp70/server/openerp/modules/registry.py", line 192, in get
    update_module)
  File "/opt/openerp70/server/openerp/modules/registry.py", line 218, in new
    openerp.modules.load_modules(registry.db, force_demo, status, update_module)
  File "/opt/openerp70/server/openerp/modules/loading.py", line 344, in load_modules
    processed = load_marked_modules(cr, graph, states_to_load, force, status, report, loaded_modules, update_module)
  File "/opt/openerp70/server/openerp/modules/loading.py", line 259, in load_marked_modules
    loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks)
  File "/opt/openerp70/server/openerp/modules/loading.py", line 191, in load_module_graph
    load_data(module_name, idref, mode)
  File "/opt/openerp70/server/openerp/modules/loading.py", line 76, in <lambda>
    load_data = lambda *args: _load_data(cr, *args, kind='data')
  File "/opt/openerp70/server/openerp/modules/loading.py", line 127, in _load_data
    tools.convert_xml_import(cr, module_name, fp, idref, mode, noupdate, report)
  File "/opt/openerp70/server/openerp/tools/convert.py", line 954, in convert_xml_import
    obj.parse(doc.getroot())
  File "/opt/openerp70/server/openerp/tools/convert.py", line 847, in parse
    self._tags[rec.tag](self.cr, rec, n)
  File "/opt/openerp70/server/openerp/tools/convert.py", line 814, in _tag_record
    id = self.pool.get('ir.model.data')._update(cr, self.uid, rec_model, self.module, res, rec_id or False, not self.isnoupdate(data_node), noupdate=self.isnoupdate(data_node), mode=self.mode, context=rec_context )
  File "/opt/openerp70/server/openerp/addons/base/ir/ir_model.py", line 937, in _update
    model_obj.write(cr, uid, [res_id], values, context=context)
  File "/opt/openerp70/server/openerp/addons/base/ir/ir_ui_view.py", line 207, in write
    return super(view, self).write(cr, uid, ids, vals, context)
  File "/opt/openerp70/server/openerp/osv/orm.py", line 4201, in write
    self._validate(cr, user, ids, context)
  File "/opt/openerp70/server/openerp/osv/orm.py", line 1544, in _validate
    raise except_orm('ValidateError', '\n'.join(error_msgs))
except_orm: ('ValidateError', u'Error occurred while validating the field(s) arch: Invalid XML for View Architecture!')
____________________________________________________________________________________

as I understand 'shipped' field not exist in 'sale.view_order_form'.

is this an error?? or to add a field after 'shipped' I need to inherit from sale_stock.view_order_form_inherit??

this happend to me on OpenERP 7.0 but in 6.1 version works fine.

Question information

Language:
English Edit question
Status:
Expired
For:
Odoo Server (MOVED TO GITHUB) Edit question
Assignee:
No assignee Edit question
Last query:
Last reply:
Revision history for this message
Christian Alvarez Ponce (naitsir) said :
#1

I did a little change, when I inherit my view from sale_stock.view_order_form_inherit and depends from sale_stock the new field is added correctly. is this a correct operation??

Revision history for this message
Launchpad Janitor (janitor) said :
#2

This question was expired because it remained in the 'Open' state without activity for the last 15 days.