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") service_ids = fields.One2many("service.instance", "equipment_id", string="Services") hosting_city = fields.Char("Hosting City") nb_cores = fields.Integer("Nb Cores") ram = fields.Integer("RAM (Go)") disk_storage = fields.Integer("Disk Storage (Go)") backup_activated = fields.Boolean("Backup Activated ?") backup_server_id = fields.Many2one("backup.server", string="Backup Server") backup_ok = fields.Boolean("Backup OK ?") 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"): for record in self: record.name_fr = record.name return for record in self: record.name_fr = record.with_context(lang="fr_FR").name def write(self, vals): res = super().write(vals) if "active" in vals: self.with_context(active_test=False).service_ids.write( {"active": vals["active"]} ) return res