Přejít na obsah
Menu
You need to be registered to interact with the community.
This question has been flagged
2 Odpovědi
5107 Zobrazení

How to "directly" override a method in the osv Model class, such as write, create, etc, so that any new model that I create inherits this functionality?
I mean, suppose I am extending res.partner, sale.order, purchase.order and a bunch of other models, and I want to override write for all of them, adding the same code to every one (like logging or something). Can I do this without overriding write in every single model?

Avatar
Zrušit

Already asked related questions 1) https://www.odoo.com/forum/help-1/question/how-to-override-method-of-basemodel-orm-in-odoo-v8-61799 2) https://www.odoo.com/forum/help-1/question/inherit-create-function-in-the-new-framework-62150#answer-62249

Nejlepší odpověď

Hi Julian,

def unlink(self, cr, uid, ids, context=None):

     --- custome code --

after creating your method add this code

osv.osv.unlink = unlink
now your method is overrided the osv method
   

Avatar
Zrušit
Autor

Thanks, this worked!

Nejlepší odpověď

Hi Julian,

You can do as you want. Just see the following ex for the write method. It is override the write method of the osv.

from openerp.osv import orm

def custom_write(self, cr, uid, ids, vals, context=None):

 ..... Your code ...

    return True

orm.BaseModel.write = custom_write

 

Avatar
Zrušit
Autor

Thanks this worked!

Related Posts Odpovědi Zobrazení Aktivita
1
bře 15
4800
3
lis 24
30024
1
pro 21
2761
0
pro 21
2326
3
pro 15
1367