Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
3 Odpowiedzi
2961 Widoki

My module with my.custom.model depends on the base and mail modules.
However, when (for example) sale module will be installed, must create a predefined record in the my.custom.model.

Creating predefined record for sale in data/my_module_data.xml does not make sense (error if sale not exist).

How to do it? Any suggestions?

Awatar
Odrzuć
Najlepsza odpowiedź

Why don't you create another module that depends on sale module and do the stuff you want to do.

If you don't want to create another module then inherit "ir.module.module" object in your module and override the "button_install" method, first call the super method and then create predefined records.

Awatar
Odrzuć
Autor

Thank you for the right suggestions. However, it only gives half of the solution. Works if my module is installed first. What to do when the sale module is installed earlier.

Najlepsza odpowiedź

Hi Zbik,

If your module is always installed last you can move the data logic from the XML to the Python side? In this case you can create a post_init_hook which goes off when you install the module. In the hook you can then check which modules are (or are not) installed and then insert a set of data depending on this.

# manifest.py
'post_init_hook': 'post_init_hook',

# your_python_file.py
def post_init_hook(cr, registry):
env = api.Environment(cr, SUPERUSER_ID, {}) # do your checks and insertion here

If it is the other way around (or you don't know it for sure) you can also override the installation module of apps and do your extra logic there, just like Sudhir suggested. The combination of these both methods should cover all cases.

Regards,

Yenthe

Awatar
Odrzuć
Autor

Thank you Yenthe. You're right. Combination of both methods will be the solution that I need :)

Powiązane posty Odpowiedzi Widoki Czynność
1
kwi 24
2064
1
sie 22
2828
0
maj 17
7523
1
mar 15
3958
2
mar 15
4485