53 lines
1.6 KiB
Python
53 lines
1.6 KiB
Python
# -*- coding: utf-8 -*-
|
|
# Copyright 2017 Camptocamp SA
|
|
# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html)
|
|
|
|
from odoo import _, api, models
|
|
|
|
|
|
class QueueJob(models.Model):
|
|
|
|
_inherit = 'queue.job'
|
|
|
|
@api.multi
|
|
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
|