Help

0

Is there another way to create ir.config_parameter upon installation aside from xml?

Avatar
Jean Sarmiento

I'm trying to include an if-else setup for my ir.config_parameter. But I can't think of any way to have it done in the xml with the use of <record id="_____" model="ir.config_parameter">.

So is there a way to have it done in Python and create the following ir.config_parameter just like when you install the module? 

Or maybe there is a way to use if-else in xml when creating ir.config_parameter?

Thanks!

Avatar
Discard
3Answers
1
Best Answer

In odoo v12, we have field parameter named config_parameter="" in res.config.settings model. 

do_not_use = fields.Boolean(
config_parameter='model_name.do_not_use
)

In other versions, we can use set_param method in res.config.settings and use that to create a new record.


Avatar
Discard
1
Avatar
Paresh Wagh
Best Answer

Hi Jean: You can create a system parameter from python like this:

self.env['ir.config_parameter'].sudo().set_param('<name of system parameter>', <value of system parameter>)
3Comments
Avatar
Discard
Avatar
Jean Sarmiento
-

Hi! Using this creates the ir.config_parameter when installing the module? Thanks!

Avatar
Paresh Wagh
-

You will need to define a post_init_hook in the manifest file of the module and write this code inside it to do this during installation. Here is an example from the Sales module.

Manifest file: https://github.com/odoo/odoo/blob/12.0/addons/sale_management/__manifest__.py#L58

Function definition: https://github.com/odoo/odoo/blob/12.0/addons/sale_management/__init__.py#L18

Avatar
Jean Sarmiento
-

Will look into it! Thank you so much, Paresh!

0
Best Answer

Yes, you can add the default value from python itself like this : 

self.env['ir.config_parameter'].sudo().get_param('your_module.your_field', default='[]')

The "[]" is best to use if you are using many2many fields. You can set your own default based on value you need.

Avatar
Discard