From 3e7e30ac148d50d776e8b6e4c5e5072a325c7552 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phan=20Sainl=C3=A9ger?= Date: Tue, 30 Jun 2026 11:20:36 +0200 Subject: [PATCH 1/3] [IMP] maintenance_server_data: add main_domain_name field in equipments --- maintenance_server_data/models/maintenance_equipment.py | 1 + maintenance_server_data/views/maintenance_equipment.xml | 2 ++ 2 files changed, 3 insertions(+) diff --git a/maintenance_server_data/models/maintenance_equipment.py b/maintenance_server_data/models/maintenance_equipment.py index 039d41e..f2e302c 100644 --- a/maintenance_server_data/models/maintenance_equipment.py +++ b/maintenance_server_data/models/maintenance_equipment.py @@ -5,6 +5,7 @@ class MaintenanceEquipment(models.Model): _inherit = "maintenance.equipment" server_ip = fields.Char("Server Ip Address") + main_domain_name = fields.Char("Main Domain Name", ) distribution_id = fields.Many2one("os.distribution", string="Distribution") service_ids = fields.One2many("service.instance", "equipment_id", string="Services") hosting_city = fields.Char("Hosting City") diff --git a/maintenance_server_data/views/maintenance_equipment.xml b/maintenance_server_data/views/maintenance_equipment.xml index 5db8574..d9310d9 100644 --- a/maintenance_server_data/views/maintenance_equipment.xml +++ b/maintenance_server_data/views/maintenance_equipment.xml @@ -8,6 +8,7 @@ + @@ -45,6 +46,7 @@ + -- 2.49.1 From e4c485576cee2dbf974828f303f08d6571b49fd4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phan=20Sainl=C3=A9ger?= Date: Tue, 30 Jun 2026 16:16:31 +0200 Subject: [PATCH 2/3] [FIX] maintenance_server_data: add code protection if fr_FR language not installed --- maintenance_server_data/models/maintenance_equipment.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/maintenance_server_data/models/maintenance_equipment.py b/maintenance_server_data/models/maintenance_equipment.py index f2e302c..e6f45ce 100644 --- a/maintenance_server_data/models/maintenance_equipment.py +++ b/maintenance_server_data/models/maintenance_equipment.py @@ -20,6 +20,10 @@ class MaintenanceEquipment(models.Model): @api.depends("name") def _compute_name_fr(self): + if not self.env["res.lang"]._lang_get("fr_FR"): + for record in self: + record.name_fr = record.name + return for record in self: record.name_fr = record.with_context(lang="fr_FR").name -- 2.49.1 From 3639238d63c286423e9a49e5ca5dc3f9fb482cd7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phan=20Sainl=C3=A9ger?= Date: Tue, 30 Jun 2026 16:17:04 +0200 Subject: [PATCH 3/3] [IMP] maintenance_server_data: add unique constraint rule on some equipement fields --- .../models/maintenance_equipment.py | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/maintenance_server_data/models/maintenance_equipment.py b/maintenance_server_data/models/maintenance_equipment.py index e6f45ce..f9435ab 100644 --- a/maintenance_server_data/models/maintenance_equipment.py +++ b/maintenance_server_data/models/maintenance_equipment.py @@ -4,6 +4,12 @@ from odoo import api, fields, models class MaintenanceEquipment(models.Model): _inherit = "maintenance.equipment" + _sql_constraints = [ + ('unique_name', 'UNIQUE(name)', 'Name must be unique.'), + ('unique_server_ip', 'UNIQUE(server_ip)', 'Server IP must be unique.'), + ('unique_main_domain_name', 'UNIQUE(main_domain_name)', 'Main Domain Name must be unique.'), + ] + server_ip = fields.Char("Server Ip Address") main_domain_name = fields.Char("Main Domain Name", ) distribution_id = fields.Many2one("os.distribution", string="Distribution") @@ -18,6 +24,18 @@ class MaintenanceEquipment(models.Model): name_fr = fields.Char("Name (FR)", compute="_compute_name_fr", store=True) + def copy_data(self, default=None): + default = dict(default or {}) + if "server_ip" not in default: + default["server_ip"] = False + if "main_domain_name" not in default: + default["main_domain_name"] = False + vals_list = super().copy_data(default=default) + if "name" not in default: + for equipment, vals in zip(self, vals_list): + vals["name"] = self.env._("%s (copy)", equipment.name) + return vals_list + @api.depends("name") def _compute_name_fr(self): if not self.env["res.lang"]._lang_get("fr_FR"): -- 2.49.1