Skip to Content
Menu
This question has been flagged
2 Replies
8216 Views

In the model, I have defined a function 'FOO'; a user create a record 'X' of this model and saved it.

after that, I want the funciton 'FOO' would run automatically once the user open the existed record 'X'; is this possible?


Avatar
Discard
Best Answer


Hello,

They Have Two Options :

Option 1:

You can use fields_view_get method. Try below code maybe it helps you

@api.model
def fields_view_get(self, view_id=None, view_type='form', toolbar=False,
submenu=False):
    res = super(Project, self).fields_view_get(
    view_id=view_id, view_type=view_type, toolbar=toolbar,
    submenu=submenu)
    # add here your condition
    return res

Option 2:

You can use the compute method but in your case, this method not depends on any field mean you can use @api.multi in place of @api.depends

Thanks 

Avatar
Discard
Author

thank you very much.

Best Answer

A few approaches came to my mind.

The first 'hacky' way is to introduce some dummy field with a compute method, but which is not stored. An example:

@api.multi
def _compute_dummy_field(self):
# the method is triggered since a field should be re-computed
self.my_method() # now trigger your function

dummy_field = fields.Char(
compute=_compute_dummy_field,
store=False,

Do not forget to add dummy_field to a form view or any xml which reload should result in your function. Otherwise, 'compute' would not be launched.

Take also into account that in such a way you tigger a method, but you would not be able to return some window action. Just some calculations.


The second it to re-define the 'open' method on Javascript level (not simple!). Here you can apply an RPC method. For hints have a look here: https://odoo-master.readthedocs.io/en/latest/reference/javascript.html#rpc

Avatar
Discard
Author

thank you for you reply.

Related Posts Replies Views Activity
1
Sep 22
3406
1
May 25
418
0
Mar 25
645
0
Mar 25
447
1
Mar 25
1535