Compare commits

...

3 Commits

Author SHA1 Message Date
Stéphan Sainléger
3639238d63 [IMP] maintenance_server_data: add unique constraint rule on some equipement fields
Some checks failed
pre-commit / pre-commit (pull_request) Failing after 6m8s
2026-06-30 16:17:04 +02:00
Stéphan Sainléger
e4c485576c [FIX] maintenance_server_data: add code protection if fr_FR language not installed 2026-06-30 16:16:31 +02:00
Stéphan Sainléger
3e7e30ac14 [IMP] maintenance_server_data: add main_domain_name field in equipments 2026-06-30 11:20:36 +02:00
2 changed files with 25 additions and 0 deletions

View File

@@ -4,7 +4,14 @@ from odoo import api, fields, models
class MaintenanceEquipment(models.Model): class MaintenanceEquipment(models.Model):
_inherit = "maintenance.equipment" _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") server_ip = fields.Char("Server Ip Address")
main_domain_name = fields.Char("Main Domain Name", )
distribution_id = fields.Many2one("os.distribution", string="Distribution") distribution_id = fields.Many2one("os.distribution", string="Distribution")
service_ids = fields.One2many("service.instance", "equipment_id", string="Services") service_ids = fields.One2many("service.instance", "equipment_id", string="Services")
hosting_city = fields.Char("Hosting City") hosting_city = fields.Char("Hosting City")
@@ -17,8 +24,24 @@ class MaintenanceEquipment(models.Model):
name_fr = fields.Char("Name (FR)", compute="_compute_name_fr", store=True) 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") @api.depends("name")
def _compute_name_fr(self): 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: for record in self:
record.name_fr = record.with_context(lang="fr_FR").name record.name_fr = record.with_context(lang="fr_FR").name

View File

@@ -8,6 +8,7 @@
<xpath expr="//field[@name='effective_date']/.." position="after"> <xpath expr="//field[@name='effective_date']/.." position="after">
<group name="server_data" string="Server data"> <group name="server_data" string="Server data">
<field name="server_ip" /> <field name="server_ip" />
<field name="main_domain_name" />
<field name="hosting_city" /> <field name="hosting_city" />
<field name="distribution_id" /> <field name="distribution_id" />
<field name="nb_cores" /> <field name="nb_cores" />
@@ -45,6 +46,7 @@
<field name="arch" type="xml"> <field name="arch" type="xml">
<xpath expr="//field[@name='category_id']" position="after"> <xpath expr="//field[@name='category_id']" position="after">
<field name="server_ip" optional="hide" /> <field name="server_ip" optional="hide" />
<field name="main_domain_name" optional="hide" />
<field name="hosting_city" optional="hide" /> <field name="hosting_city" optional="hide" />
<field name="distribution_id" optional="hide" /> <field name="distribution_id" optional="hide" />
<field name="nb_cores" optional="hide" /> <field name="nb_cores" optional="hide" />