8
votes

I'm learning OpenERP development, and I'm stuck in a problem, which I think should be obvious.

I made a very simple module but I can't install it. It keeps saying

ValidateError Error occurred while validating the field(s) arch: Invalid XML for View Architecture!

Here is my module :

init.py

import testmod
__openerp__.py

{
'name': "Test Module",
'description': "Basic example of a (future) web module",
'category': 'Hidden',
'depends': ['base'],
'data': [
    'test_view.xml',
],
'installable': True,
'application': False,
'auto_install': False,
}

testmod.py

from openerp.osv import fields, osv

class testmod_test(osv.Model):
    _name = 'testmod.test'
    _description = 'Test Model'
    _columns = {
    'test1': fields.char('Test 1', size=32, required=True, help='Test 1 help'),
    'test2': fields.float('Test 2', help='Test 2 help'),
    }

testmod_test()

test_view.xml

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

<record id="testmod_test_form" model="ir.ui.view">
    <field name="name">testmod.test.form</field>
    <field name="model">testmod.test</field>
    <field name="arch" type="xml">
      <form string="Test" version="7.0">  
        <field name="test1" />
        <field name="test2"/>

      </form>
    </field>
</record>

<record id="testmod_test_tree" model="ir.ui.view">
  <field name="name">testmod.test.tree</field>
  <field name="model">testmod.test</field>
  <field name="arch" type="xml">
    <tree string="Test">
      <field name="test1" />
       <field name="test2"/>
    </tree>
  </field>
</record>

<record model="ir.actions.act_window" id="action_testmod_test">
  <field name="name">Test</field>
  <field name="res_model">testmod.test</field>
  <field name="view_type">form</field>
  <field name="view_mode">tree,form</field>
</record>

<menuitem 
          name="Test" 
          id="menu_testmod_test" 

          />

<menuitem 
          name="Test sub" 
          parent="menu_testmod_test"
          id="menu_testmod_test_sub" 
          />
<menuitem
        name="Sub Test"
        id="menu_subtest"
        parent="menu_testmod_test_sub"
        action="action_testmod_test"    
        />


</data>
</openerp> 

Here is the full log error :

2013-09-17 19:22:19,199 1674 INFO emad92 openerp.modules.loading: loading 1 modules... 2013-09-17 19:22:19,220 1674 INFO emad92 openerp.modules.loading: loading 10 modules... 2013-09-17 19:22:19,251 1674 INFO emad92 openerp.modules.loading: loading 11 modules... 2013-09-17 19:22:19,252 1674 INFO emad92 openerp.modules.module: module testmod: creating or updating database tables 2013-09-17 19:22:19,255 1674 INFO emad92 openerp.modules.loading: module testmod: loading test_view.xml 2013-09-17 19:22:19,269 1674 ERROR emad92 openerp.addons.base.ir.ir_ui_view: Can't render view for model: testmod.test Traceback (most recent call last): File "/usr/lib/pymodules/python2.7/openerp/addons/base/ir/ir_ui_view.py", line 126, 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) AttributeError: 'NoneType' object has no attribute 'fields_view_get' 2013-09-17 19:22:19,276 1674 ERROR emad92 openerp.tools.convert: Parse error in /opt/modules-openerp/testmod/test_view.xml:5:

<record id="testmod_test_form" model="ir.ui.view">
    <field name="name">testmod.test.form</field>
    <field name="model">testmod.test</field>
    <field name="arch" type="xml">
      <form string="Test" version="7.0">  
        <field name="test1" />
        <field name="test2"/>

      </form>
    </field>
</record> 

Traceback (most recent call last): File

"/usr/lib/pymodules/python2.7/openerp/tools/convert.py", line 847, in parse self._tags[rec.tag](self.cr, rec, n) File "/usr/lib/pymodules/python2.7/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 "/usr/lib/pymodules/python2.7/openerp/addons/base/ir/ir_model.py", line 964, in _update res_id = model_obj.create(cr, uid, values, context=context) File "/usr/lib/pymodules/python2.7/openerp/addons/base/ir/ir_ui_view.py", line 103, in create return super(view, self).create(cr, uid, values, context) File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 4472, in create self._validate(cr, user, [id_new], context) File "/usr/lib/pymodules/python2.7/openerp/osv/orm.py", line 1546, 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-09-17 19:22:19,278 1674 ERROR emad92 openerp.netsvc: ValidateError Error occurred while validating the field(s) arch: Invalid XML for View Architecture! Traceback (most recent call last): File "/usr/lib/pymodules/python2.7/openerp/netsvc.py", line 292, in dispatch_rpc result = ExportService.getService(service_name).dispatch(method, params) File "/usr/lib/pymodules/python2.7/openerp/service/web_services.py", line 626, in dispatch res = fn(db, uid, *params) File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 188, in execute_kw return self.execute(db, uid, obj, method, *args, **kw or {}) File "/usr/lib/pymodules/python2.7/openerp/osv/osv.py", line 144, in wrapper raise except_osv(inst.name, inst.value) except_osv: ('ValidateError', u'Error occurred while validating the field(s) arch: Invalid XML for View Architecture!') 2013-09-17 19:22:19,283 1674 INFO emad92 werkzeug: 127.0.0.1 - - [17/Sep/2013 19:22:19] "POST /web/dataset/call_button HTTP/1.1" 200 -

and I'm using OpenERP 7.0 in a linux platform (ubuntu 13.04).

3
Cant see any obvious problems (i'm more familiar with version 6.1 though) - try posting on help.openerp.com as well.TimoSolo
Hello, I tried to install it in 7.0 as well as trunk and it works properly no problem in my case. I am able to save records also. :)Pooja

3 Answers

2
votes

Try commenting out the data section in openerp.py once install and re-enable the data section and upgrade the module. Sometimes openerp fails to actually create the model and causes errors. This might solve you rproblem

2
votes

I have created a module with the mentioned file contents and its installed without any issue. Please check your file names and module structure are correct.

0
votes

The exception AttributeError happens because the module is not installed properly.

The function fields_view_get tries to find the fields of your model, but they are missing.

self.pool.get(view.model).fields_view_get(cr, uid, view_id=view.id, view_type=view.type, context=context) AttributeError: 'NoneType' object has no attribute

Can you check if the module is installed or expect it the resume? Check the ir.model.fields table by doing in psql select * from ir.model.fields order by id desc this should show the 2 fields, but i guess the will be not in the table. Mayby only one of the 2. Remove the missing fields from the xml view and try to resume the installation. Restart OpenErp server, uninstall and reinstall the module. I had the same issue and was only able to fix after i got the modules completely installed , restarted server and removed and tried again