Как передать идентификатор cron как arg в методе, который вызывает cron

1

У меня много коронков, которые называют один и тот же метод в разное время, и метод должен найти то, что cron называл его, чтобы найти другую запись, основанную на этом cron.

Арги не должны быть исправлены. Количество коронков будет создано конечным пользователем на передней стороне оду, поэтому всякий раз, когда cron выполняет и вызывает метод, cron должен передать его собственный идентификатор методу, чтобы он был динамическим.

Метод Python, вызывающий cron:

@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>
Теги:
odoo
odoo-11
cron

1 ответ

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>
  • 0
    Я не хочу постоянно посылать исправления. Там будет число cron, созданных конечным пользователем на стороне переднего конца odoo, поэтому всякий раз, когда cron выполняет и вызывает метод, cron должен передать id метода.
  • 0
    Извините, ваши изменения будут удалены, когда я добавлю некоторую информацию в вопрос!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню