在Odoo11中创建Cron和ServerAction

来源: | 2018-08-27 00:00:00

要在odoo11中创建Cron,您还必须设置model_id字段,因为现在在odoo11中ir.cron 具有与ir.actions.server基于委托的关系,其中model_id设置为required。
下面的代码解释了ir.cr

要在odoo11中创建Cron,您还必须设置model_id字段,因为现在在odoo11中ir.cron  具有ir.actions.server基于委托的关系,其中model_id设置为required。

下面的代码解释了ir.cronir.actions.server之间基于

OpenERP.HK

委托的关系

 

1
2
3
4
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
classir_cron(models.Model):
 _name="ir.cron"
 _order='cron_name'
 
 ir_actions_server_id=fields.Many2one(
 comodel_name='ir.actions.server',
 

openerp

string='Server action',
 delegate=True,
 ondelete='restrict',
 required=True
 )
 ....
 ....
 
classIrActionsServer(models.Model):
 _name='ir.actions.server'
 _table='ir_act_server'
 _inherit='ir.actions.actions'
 
 model_id=fields.Many2one(
 comodel_name='ir.model',
 string='Model',
 required=True,
 ondelete='cascade',
 help="Model on which the server action runs."
 )
 ....
 ....
1
 

为了解释这个例子,我正在创建一个新的模型(my.task)并注册 @ api.model的装饰方法cron_do_task。

1
2
3
4
6
7
8
classMyTask(models.Model):
 
 _name="my.task"
 
 @api.model
 defcron_do_task(self):pass
 

odoo

....
 ....

 

现在为ir.cron创建数据XML文件,它应该如下所示:

1
2
3
4
6
7
8
9
10
11
<recordid="cron_do_task"forcecreate='True'model="ir.cron">
 <fieldname="name">Do -Task</field>
 <fieldeval="False"name="active"/>
 <fieldname="user_id"ref="base.user_root"/>
 <fieldname="interval_number">15</field>
 <fieldname="interval_type">minutes</field>
 <fieldname="numbercall">-1</field>
 <fieldname="model_id"ref="<strong>model_my_task</strong>"/>
 <fieldname="state">code</field>
 <fieldname="code">model.<strong>cron_do_task</strong>()</field>
</record>

这里model_id是你想要执行代码部分的模型(现在@ api.model修饰方法cron_do_task)。

 

要在odoo11中创建Server Action,请遵循以下示例:

更新你的python代码并添加@ api.multi修饰方法(server_do_action):

1
2
3
4
6
7
8
9
10
11
classMyTask(models.Model):
 
 _name="my.task"
 
 @api.model
 defcron_do_task(self):pass
 
 @api.multi
 def<strong>server_do_action</strong>(self):pass 
 ....
 ....

 

并为ir.actions.server创建数据XML文件,   如下所示:

1
2
3
4
6
7
8
9
10
11
<recordid="do_task_server"model="ir.actions.server">
 <fieldname="name">Do Action</field>
 <fieldname="type">ir.actions.server</field>
 <fieldname="model_id"ref="model_my_task"/>
 <fieldname="state">code</field>
 <fieldname="code">
 if records:
 action = records.<strong>server_do_action</strong>()
 </field>
 <fieldname="<strong>binding_model_id</strong>" ref="model_my_task"/>
 </record>

 

OpenERP.HK

"> 这里, model_id  是此操作将显示 的模型, binding_model_id 代码 (records.server_do_action()) 将在单击服务器操作时执行的模型

上一篇:SX省新岩砂晶省料SX省新为安全家居而生

下一篇:很抱歉没有了

热点排行

专题

调查