You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

67 lines
2.3 KiB

# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl.html).
from odoo import fields, models
class StorageBackend(models.Model):
_inherit = "storage.backend"
synchronize_task_ids = fields.One2many(
"attachment.synchronize.task", "backend_id", string="Tasks"
)
import_task_count = fields.Integer(
"Import Tasks", compute="_compute_import_task_count"
)
export_task_count = fields.Integer(
"Export Tasks", compute="_compute_export_task_count"
)
def _compute_import_task_count(self):
for rec in self:
rec.import_task_count = len(
rec.synchronize_task_ids.filtered(lambda t: t.method_type == "import")
)
def _compute_export_task_count(self):
for rec in self:
rec.export_task_count = len(
rec.synchronize_task_ids.filtered(lambda t: t.method_type == "export")
)
def action_related_import_task(self):
self.ensure_one()
act_window_xml_id = "attachment_synchronize.action_attachment_import_task"
act_window = self.env.ref(act_window_xml_id).read()[0]
domain = [
("id", "in", self.synchronize_task_ids.ids),
("method_type", "=", "import"),
]
act_window["domain"] = domain
if self.import_task_count == 1:
form = self.env.ref("attachment_synchronize.view_attachment_task_form")
act_window["views"] = [(form.id, "form")]
act_window["res_id"] = (
self.env["attachment.synchronize.task"].search(domain).id
)
return act_window
def action_related_export_task(self):
self.ensure_one()
act_window_xml_id = "attachment_synchronize.action_attachment_export_task"
act_window = self.env.ref(act_window_xml_id).read()[0]
domain = [
("id", "in", self.synchronize_task_ids.ids),
("method_type", "=", "export"),
]
act_window["domain"] = domain
if self.export_task_count == 1:
form = self.env.ref("attachment_synchronize.view_attachment_task_form")
act_window["views"] = [(form.id, "form")]
act_window["res_id"] = (
self.env["attachment.synchronize.task"].search(domain).id
)
return act_window