Odoo Hilfe


1 Antwort
Antonio Miras Spanien
23.08.17, 07:13

The problem:

My AddOn relies on Sales module.

When Odoo reads my XML data file and tries to insert a new record into res.partner, the model being used is the stock one. To clarify, the one living in “odoo/odoo/addons/base/res/res_partner.py” which doesn't have a sale_warn field.

Now, as Sales module's been installed, the res_partner table in the database already has several required fields found in the inherited ResPartner model. The one in “odoo/addons/sale/models/res_partner.py”

So when the upgrade process is running, no matter whether I use a data file or a Python function, I can't access the fields from the inherited model, but the database runtime is waiting to throw an exception if I don't write those fields.

The solution:

After Odoo is done loading modules, the model res.partner available in the Environment object is the proper one (ResPartner), with all required fields available.

So, in the end, my solution is:

1) Call a python function in my data.xml that will activate a flag, to signal whether my Addon has been installed or upgraded

2) As soon as any part of my AddOn takes over, check the flag, and run an python function to insert default records. A good place to do that might be overriding fields_view_get in any model.

You can also use an additional xml data (not present in manifest.py, obiously), parsed in Python code to insert the data.

Fragen Sie
Keep Informed
2 Verfolger
About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now