oca-technical/odoo-bringout-oca-connector-connector/connector/models/queue_job.py
2025-08-29 15:43:03 +02:00

44 lines
1.5 KiB
Python

# Copyright 2017 Camptocamp SA
# License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl.html)
from odoo import _, models
class QueueJob(models.Model):
_inherit = "queue.job"
def related_action_unwrap_binding(self, component_usage="binder"):
"""Open a form view with the unwrapped record.
For instance, for a job on a ``magento.product.product``,
it will open a ``product.product`` form view with the unwrapped
record.
:param component_usage: base component usage to search for the binder
"""
self.ensure_one()
model_name = self.model_name
binding = self.env[model_name].browse(self.record_ids).exists()
if not binding:
return None
if len(binding) > 1:
# not handled
return None
action = {
"name": _("Related Record"),
"type": "ir.actions.act_window",
"view_type": "form",
"view_mode": "form",
}
with binding.backend_id.work_on(binding._name) as work:
binder = work.component(usage=component_usage)
try:
model = binder.unwrap_model()
record = binder.unwrap_binding(binding)
# the unwrapped record will be displayed
action.update({"res_model": model, "res_id": record.id})
except ValueError:
# the binding record will be displayed
action.update({"res_model": binding._name, "res_id": binding.id})
return action