Hello everyone,
I am new in odoo (v.8) module developing and trying to make a custom module to add some functionality for my business. I have the following code
__init__.py
# -*- coding: utf-8 -*- import controllers import models
__openerp__.py
# -*- coding: utf-8 -*- { 'name': "Cambridge Weight Plan", 'summary': """ Cambridge Weight Plan Extra Features""", 'description': """PRF informations and measurements are recorded for each customer. """, 'author': "GDJ Club", 'website': "http://www.gdjclub.com", # Categories can be used to filter modules in modules listing
# for the full list 'category': 'Tools', 'version': '0.1', # any module necessary for this one to work correctly 'depends': ['base', 'sale', 'crm'], # always loaded 'data': [
'templates.xml', ], # only loaded in demonstration mode 'demo': [ ], }
# -*- coding: utf-8 -*- from openerp import models, fields, api class cambridge(models.Model): #Inhertis the model product.template _inherit = 'res.partner' #Creates two new fields (CostPrice and ShippingCost) in the model product.template measDate = fields.Date('Starting Date') measHeight = fields.Float('Height') measWeightStart = fields.Float('Starting Weight') measWaist = fields.Float('Waist') measBmi = fields.Float('BMI')
templates.xml
<openerp> <data> <record id="view_product_form_inherit" model="ir.ui.view"> <field name="name">res.partner.form.inherit</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_form"/> <field name="arch" type="xml"> <!--Adds a new page (tab) to the view after the tab Information --> <xpath expr="//page[@string='Internal Notes']" position="before"> <page name="Sample" string="PR"> <group> <group> <field name="measDate"/> <field name="measHeight"/> <field name="measWeightStart"/> </group> <group> <field name="measWaist"/> <field name="measBmi"/> </group> </group> </page> </xpath> </field> </record> </data> </openerp>
When I try to install the module it throughs this in Trackback
Odoo Server Error Traceback (most recent call last): File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/http.py", line 530, in _handle_exception return super(JsonRequest, self)._handle_exception(exception) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/http.py", line 567, in dispatch result = self._call_function(**self.params) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/http.py", line 303, in _call_function return checked_call(self.db, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/service/model.py", line 113, in wrapper return f(dbname, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/http.py", line 300, in checked_call return self.endpoint(*a, **kw) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/http.py", line 796, in __call__ return self.method(*args, **kw) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/http.py", line 396, in response_wrap response = f(*args, **kw) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/addons/web/controllers/main.py", line 940, in call_button action = self._call_kw(model, method, args, {}) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/addons/web/controllers/main.py", line 928, in _call_kw return getattr(request.registry.get(model), method)(request.cr, request.uid, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/addons/base/module/module.py", line 450, in button_immediate_install return self._button_immediate_function(cr, uid, ids, self.button_install, context=context) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/addons/base/module/module.py", line 498, in _button_immediate_function registry = openerp.modules.registry.RegistryManager.new(cr.dbname, update_module=True) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/modules/registry.py", line 368, in new openerp.modules.load_modules(registry._db, force_demo, status, update_module) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/modules/loading.py", line 355, in load_modules loaded_modules, update_module) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/modules/loading.py", line 255, in load_marked_modules loaded, processed = load_module_graph(cr, graph, progressdict, report=report, skip_modules=loaded_modules, perform_checks=perform_checks) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/modules/loading.py", line 176, in load_module_graph _load_data(cr, module_name, idref, mode, kind='data') File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/modules/loading.py", line 118, in _load_data tools.convert_file(cr, module_name, filename, idref, mode, noupdate, kind, report) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/tools/convert.py", line 901, in convert_file convert_xml_import(cr, module, fp, idref, mode, noupdate, report) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/tools/convert.py", line 987, in convert_xml_import obj.parse(doc.getroot(), mode=mode) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/tools/convert.py", line 853, in parse self._tags[rec.tag](self.cr, rec, n, mode=mode) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/tools/convert.py", line 763, in _tag_record id = self.pool['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/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/addons/base/ir/ir_model.py", line 1077, in _update res_id = model_obj.create(cr, uid, values, context=context) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/addons/base/ir/ir_ui_view.py", line 264, in create context=context) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/api.py", line 241, in wrapper return old_api(self, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/api.py", line 336, in old_api result = method(recs, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/models.py", line 4059, in create record = self.browse(self._create(old_vals)) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/api.py", line 239, in wrapper return new_api(self, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/api.py", line 462, in new_api result = method(self._model, cr, uid, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/models.py", line 4250, in _create recs._validate_fields(vals) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/api.py", line 239, in wrapper return new_api(self, *args, **kwargs) File "/opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/models.py", line 1267, in _validate_fields raise ValidationError('\n'.join(errors)) ParseError: "ValidateError Field(s) `arch` failed against a constraint: Invalid view definition Error details: Field `measWaist` does not exist Error context: View `res.partner.form.inherit` [view_id: 1077, xml_id: n/a, model: res.partner, parent_id: 126]" while parsing /opt/bitnami/apps/odoo/lib/odoo-8.0_20150423-py2.7.egg/openerp/addons/cambridge_weight_plan/templates.xml:3, near <record id="view_product_form_inherit" model="ir.ui.view"> <field name="name">res.partner.form.inherit</field> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_form"/> <field name="arch" type="xml"> <!--Adds a new page (tab) to the view after the tab Information --> <xpath expr="//page[@string='Internal Notes']" position="before"> <page name="Sample" string="Φόρμα Ιατρικού Αρχείου"> <group> <group> <field name="measDate"/> <field name="measHeight"/> <field name="measWeightStart"/> </group> <group> <field name="measWaist"/> <field name="measBmi"/> </group> </group> </page> </xpath> </field> </record>
Although it is not going on in the installation the fields from the models.py are added in the field list (Database Structure -> Fields) But in the "Type" says "base" and the "In Modules" is empty. I cannot use them nor delete them.
Is it something wrong in the code? Anything you suggest will help.
Thank you in advance.
It seems the Waist and BMI fields were added later. Restart the server and upgrade the module. Usually, these fields should be added to product.template, not res.partner.