我有很多cron在不同时间调用同一方法,并且该方法需要找到哪个cron调用了该方法,以基于该cron查找其他记录。
args不能固定。最终用户会在odoo的前端侧创建大量的cron,因此,只要cron执行并调用该方法,cron就会将其自己的id传递给该方法,因此它应该是动态的。
由cron调用的Python方法:
@api.model
def send_feedback_email_cron(self,id):
#id is needed to find global channel in which this cron is set.
global_channel = self.global_channel_id.search([('cron_id','=',id)])
for rule in global_channel.email_rule_ids:
rule.send_customer_review_email()
return True
验证码:
<record id="ir_cron_send_customer_feedback_email_job" model="ir.cron">
<field name="name">Send Feedback Email to customer</field>
<field eval="False" name="active"/>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">4</field>
<field name="interval_type">hours</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall"/>
<field eval="ref('customer_review_global_channel_ept.model_email_global_channel_rule_ept')" name="model_id" />
<field name="state">code</field>
<field name="code">model.send_feedback_email_cron()</field>
</record>
答案 0 :(得分:0)
使用ir.cron
function
和args
字段:
<record id="ir_cron_send_customer_feedback_email_job" model="ir.cron">
<field name="name">Send Feedback Email to customer</field>
<field eval="False" name="active"/>
<field name="user_id" ref="base.user_root"/>
<field name="interval_number">4</field>
<field name="interval_type">hours</field>
<field name="numbercall">-1</field>
<field eval="False" name="doall"/>
<field eval="ref('customer_review_global_channel_ept.model_email_global_channel_rule_ept')" name="model_id" />
<field name="function" eval="'send_feedback_email_cron'"/>
<field name="args" eval="'(...your args...)'"/>
</record>