I am building a custom module where I add an extra field to partner (Organic Certifier Code). It was working fine until I accidentally I added an user to a group and then I removed it, now the server crashes if I use my module. I use Odoo v12.
Here is my class: models/partner.py
# -*- coding: utf-8 -*-from odoo import fields, models
class Partner(models.Model):
_inherit = 'res.partner'
organic_certifier_code = fields.Char("Organic Certifier Code")
Here is my view views/partner.xml
<?xml version="1.0" encoding="UTF-8"?> <odoo> <record model="ir.ui.view" id="partner_organic_certifier_form_view"> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_form"/> <field name="arch" type="xml"> <field name="vat" position="after"> <field name="organic_certifier_code" placeholder="e.g. BIO-0001"/> </field> </field> </record> </odoo>
And here is the error I get:
2018-11-22 14:31:23,952 2784 ERROR mymodule werkzeug: Error on request: Traceback (most recent call last): File "/opt/odoo/odoo12-venv/lib/python3.6/site-packages/werkzeug/serving.py", line 205, in run_wsgi execute(self.server.app) File "/opt/odoo/odoo12-venv/lib/python3.6/site-packages/werkzeug/serving.py", line 193, in execute application_iter = app(environ, start_response) File "/opt/odoo/odoo12/odoo/service/wsgi_server.py", line 126, in application return werkzeug.contrib.fixers.ProxyFix(application_unproxied)(environ, start_response) File "/opt/odoo/odoo12-venv/lib/python3.6/site-packages/werkzeug/contrib/fixers.py", line 152, in __call__ return self.app(environ, start_response) File "/opt/odoo/odoo12/odoo/service/wsgi_server.py", line 117, in application_unproxied result = odoo.http.root(environ, start_response) File "/opt/odoo/odoo12/odoo/http.py", line 1317, in __call__ return self.dispatch(environ, start_response) File "/opt/odoo/odoo12/odoo/http.py", line 1290, in __call__ return self.app(environ, start_wrapped) File "/opt/odoo/odoo12-venv/lib/python3.6/site-packages/werkzeug/wsgi.py", line 599, in __call__ return self.app(environ, start_response) File "/opt/odoo/odoo12/odoo/http.py", line 1489, in dispatch response = self.get_response(httprequest, result, explicit_session) File "/opt/odoo/odoo12/odoo/http.py", line 287, in __exit__ elif self.registry: File "/opt/odoo/odoo12/odoo/http.py", line 378, in registry return odoo.registry(self.db) File "/opt/odoo/odoo12/odoo/__init__.py", line 78, in registry return modules.registry.Registry(database_name) File "/opt/odoo/odoo12/odoo/modules/registry.py", line 62, in __new__ return cls.new(db_name) File "/opt/odoo/odoo12/odoo/modules/registry.py", line 86, in new odoo.modules.load_modules(registry._db, force_demo, status, update_module) File "/opt/odoo/odoo12/odoo/modules/loading.py", line 422, in load_modules force, status, report, loaded_modules, update_module, models_to_check) File "/opt/odoo/odoo12/odoo/modules/loading.py", line 318, in load_marked_modules perform_checks=perform_checks, models_to_check=models_to_check File "/opt/odoo/odoo12/odoo/modules/loading.py", line 224, in load_module_graph load_data(cr, idref, mode, kind='data', package=package, report=report) File "/opt/odoo/odoo12/odoo/modules/loading.py", line 68, in load_data tools.convert_file(cr, package.name, filename, idref, mode, noupdate, kind, report) File "/opt/odoo/odoo12/odoo/tools/convert.py", line 792, in convert_file convert_xml_import(cr, module, fp, idref, mode, noupdate, report) File "/opt/odoo/odoo12/odoo/tools/convert.py", line 853, in convert_xml_import obj.parse(doc.getroot(), mode=mode) File "/opt/odoo/odoo12/odoo/tools/convert.py", line 754, in parse exc_info[2] File "/opt/odoo/odoo12/odoo/tools/pycompat.py", line 86, in reraise raise value.with_traceback(tb) File "/opt/odoo/odoo12/odoo/tools/convert.py", line 748, in parse self._tags[rec.tag](rec, de, mode=mode) File "/opt/odoo/odoo12/odoo/tools/convert.py", line 653, in _tag_record record = model.with_context(rec_context)._load_records([data], self.mode == 'update') File "/opt/odoo/odoo12/odoo/models.py", line 3795, in _load_records records = self.create([data['values'] for data in to_create]) File "<decorator-gen-32>", line 2, in create File "/opt/odoo/odoo12/odoo/api.py", line 452, in _model_create_multi return create(self, arg) File "/opt/odoo/odoo12/odoo/addons/base/models/ir_ui_view.py", line 418, in create return super(View, self).create(vals_list) File "<decorator-gen-3>", line 2, in create File "/opt/odoo/odoo12/odoo/api.py", line 452, in _model_create_multi return create(self, arg) File "/opt/odoo/odoo12/odoo/models.py", line 3540, in create fields[0].determine_inverse(batch_recs) File "/opt/odoo/odoo12/odoo/fields.py", line 1104, in determine_inverse getattr(records, self.inverse)() File "/opt/odoo/odoo12/odoo/addons/base/models/ir_ui_view.py", line 268, in _inverse_arch view.write(data) File "/opt/odoo/odoo12/addons/website/models/ir_ui_view.py", line 70, in write super(View, self).write(vals) File "/opt/odoo/odoo12/odoo/addons/base/models/ir_ui_view.py", line 434, in write return super(View, self).write(self._compute_defaults(vals)) File "/opt/odoo/odoo12/odoo/models.py", line 3257, in write self._write(store_vals) File "/opt/odoo/odoo12/odoo/models.py", line 3401, in _write self._validate_fields(vals) File "/opt/odoo/odoo12/odoo/models.py", line 1104, in _validate_fields raise ValidationError("%s\n\n%s" % (_("Error while validating constraint"), tools.ustr(e))) odoo.tools.convert.ParseError: "Error while validating constraint Field 'is_blacklisted' used in attributes must be present in view but is missing: - 'is_blacklisted' in attrs="{'invisible': [('is_blacklisted', '=', False)]}" Error context: View `res.partner form` [view_id: 1639, xml_id: n/a, model: res.partner, parent_id: 113] None" while parsing /opt/odoo/odoo12-custom-addons/mymodule/views/partner.xml:3, near <record model="ir.ui.view" id="partner_organic_certifier_form_view"> <field name="model">res.partner</field> <field name="inherit_id" ref="base.view_partner_form"/> <field name="arch" type="xml"> <field name="vat" position="after"> <field name="organic_certifier_code" placeholder="e.g. BIO-0001"/> </field> </field> </record> 830 0.804 2.941