Для извлечения базы данных id
из crons
, созданной из setting
меню (no xml_id)
.
Оказывается, что odoo передал то же самое context
и на выполнение, так что все, что выдобавив к context
вы найдете его в context
из self
в вашем method
, поэтому просто добавьте Id
из cron
в context
, просто переопределив два method
:
from odoo import models, api
class IrCron(models.Model):
_inherit = 'ir.cron'
@api.model
def _callback(self, cron_name, server_action_id, job_id):
""" to handle cron thread executed by Odoo."""
self = self.with_context(cron_id=job_id)
return super(IrCron, self)._callback(cron_name,server_action_id, job_id)
@api.multi
def method_direct_trigger(self):
""" to handle manual execution using the button."""
for rec in self:
# rec = rec.with_context(cron_id=rec.id)
super(IrCron, rec).method_direct_trigger()
return True
и в вашем методе:
def my_method(self):
cron_id = self.env.context.get('cron_id', False)
if cron_id:
cron = self['ir.cron'].browse(cron_id)
print(cron)
Я проверил это, и это работает, надеюсь, это легко для вас, и нет необходимости передавать какие-либо аргументы или что-либо в cron. Надеюсь, это то, что вы ищете. По умолчанию логика Odoo не предоставляет эту информацию, поэтому вам нужно изменить это поведение. нет простого способа сделать это.