From 019224ba4cccf910c2e0ba794f81769bb1687e89 Mon Sep 17 00:00:00 2001 From: git_admin Date: Mon, 27 Apr 2026 08:43:51 +0000 Subject: [PATCH] Tower: upload cetmix_tower_server 16.0.2.2.9 (via marketplace) --- .../cetmix_tower_server/models/res_partner.py | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 addons/cetmix_tower_server/models/res_partner.py diff --git a/addons/cetmix_tower_server/models/res_partner.py b/addons/cetmix_tower_server/models/res_partner.py new file mode 100644 index 0000000..f25f2d2 --- /dev/null +++ b/addons/cetmix_tower_server/models/res_partner.py @@ -0,0 +1,47 @@ +# Copyright (C) 2022 Cetmix OÜ +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import api, fields, models + + +class ResPartner(models.Model): + _inherit = "res.partner" + + server_ids = fields.One2many( + "cx.tower.server", + "partner_id", + string="Servers", + groups="cetmix_tower_server.group_user", + ) + + server_count = fields.Integer( + compute="_compute_server_count", + recursive=True, + ) + + secret_ids = fields.One2many( + "cx.tower.key.value", + "partner_id", + string="Secrets", + domain=[("key_id.key_type", "=", "s")], + groups="cetmix_tower_server.group_manager", + ) + + @api.depends("server_ids", "child_ids.server_count") + def _compute_server_count(self): + for partner in self: + own_server_count = len(partner.server_ids) + child_server_count = sum(partner.child_ids.mapped("server_count")) + partner.server_count = own_server_count + child_server_count + + def action_view_partner_servers(self): + """Open server list filtered by partner and all its descendants.""" + self.ensure_one() + return { + "name": "Servers", + "type": "ir.actions.act_window", + "res_model": "cx.tower.server", + "view_mode": "kanban,tree,form", + "domain": [("partner_id", "child_of", self.id)], + "context": {"default_partner_id": self.id}, + }